Salvataggio file in formato PDF

Anonimo
2016-05-30T14:57:29+00:00

Ciao a tutti,

ho un foglio excel con sotto un macro. La macro come prima cosa ordina i dati, poi carica in una collection i dati della prima colonna.

Successivamente cicla all'interno della collection e per ogni valore dovrebbe applicare il filtro, copiare i dati, aprire un nuovo foglio excel, incollare e salvare. E fin qui tutto bene. Però, oltre che in excel, volevo far salvare il foglio anche in PDF, però non funziona. Non va neanche in errore, esegue l'istruzione ma il PDF non viene creato.

Dove sbaglio?

Grazie

S.

Qui sotto il ciclo for della collection...

        For Each varNomeFoglio In colCollection

            vStringa = Split(CStr(varNomeFoglio), "#")

            sCod_PF = Trim(vStringa(0))

            'Applica il filtro all'excel principale con il campo pf uguale al valore della collection

            .Range("A2").AutoFilter Field:=1, Criteria1:=sCod_PF

            ' Copia

            .Range("A2").SpecialCells(xlCellTypeVisible).Copy

            'Incolla nel nuovo file

            Set wkNew = Workbooks.Add

            wkNew.Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

            wkNew.Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

            'La riga qui sotto cancella le colonne che non si vogliono nel nuovo excel

            wkNew.Worksheets(1).Range("A2").Select

            lRigaNew = wkNew.Worksheets(1).Range("A" & wkNew.Worksheets(1).Rows.Count).End(xlUp).Row

            wkNew.Worksheets(1).Rows((lRigaNew + 1) & ":65536").Delete Shift:=xlUp

            wkNew.SaveAs Filename:="C:\PDF" & Left(Trim(sCod_PF), 1) & "_00" & Right(Trim(sCod_PF), 5) & "_2015_10_CF.xls"

            wkNew.Worksheets(1).ExportAsFixedFormat Type:=xlTypePDF, _

Filename:="C:\PDF" & Left(Trim(sCod_PF), 1) & "_00" & Right(Trim(sCod_PF), 5) & "_2015_10_CF.pdf", _

Quality:=xlQualityStandard, _

OpenAfterPublish:=False

            wkNew.Close

            Set wkNew = Nothing

        Next

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

11 risposte

Ordina per: Più utili
  1. Anonimo
    2016-05-31T07:48:42+00:00

    Ciao Darth_Pig,

    E' possibile che il problema sia excel 2003 (versione 11)?

    Chiedo scusa - non avevo notato che stavi usando Excel 2003.

    I metodi Workbook.ExportAsFixedFormat e Worksheet.ExportAsFixedFormat sono stati introdotti con Excel2007:

    Comunque, mi sarei aspettato un errore se avessi tentato di usare questo metodo con Excel 2003.

    Se volessi provare il codice su un foglio di prova (quindi senza creare un secondo runtime) devo mettere:

    ActiveSheet.ExportAsFixedFormat ?

    Mi dispiace ma non ho capito.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-05-31T07:43:07+00:00

    Excel 2003 (duemilatre) non salva nativamente in .pdf.

    Vedi qui:

    Ti ricordo che Office 2003 non è più supportato da tempo:

    Inoltre Microsoft lo dichiara non pienamente compatibile con Windows 8/8.1/10.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-05-31T07:41:24+00:00

    Ho provato a creare un foglio excel con un bottone per salvare il foglio in pdf:

    Private Sub CommandButton1_Click()

                ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _

                Filename:="C:\Prova.pdf", _

                Quality:=xlQualityStandard, _

                OpenAfterPublish:=False

    End Sub

    Mi da errore di run-time 438: proprietà o metodo non supportati dall'oggetto.

    Quindi penso sia un problema di versione Excel.

    S.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-05-31T07:32:43+00:00

    Ciao Norman, grazie per la risposta.

    E' possibile che il problema sia excel 2003 (versione 11)?

    Se volessi provare il codice su un foglio di prova (quindi senza creare un secondo runtime) devo mettere:

    ActiveSheet.ExportAsFixedFormat ?

    S.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2016-05-30T16:03:09+00:00

    Ciao Darth_Pig,

    ho un foglio excel con sotto un macro. La macro come prima cosa ordina i dati, poi carica in una collection i dati della prima colonna.

    Successivamente cicla all'interno della collection e per ogni valore dovrebbe applicare il filtro, copiare i dati, aprire un nuovo foglio excel, incollare e salvare. E fin qui tutto bene. Però, oltre che in excel, volevo far salvare il foglio anche in PDF, però non funziona. Non va neanche in errore, esegue l'istruzione ma il PDF non viene creato.

    Dove sbaglio?

    Grazie

    S.

    Qui sotto il ciclo for della collection...

            For Each varNomeFoglio In colCollection

                vStringa = Split(CStr(varNomeFoglio), "#")

                sCod_PF = Trim(vStringa(0))

                'Applica il filtro all'excel principale con il campo pf uguale al valore della collection

                .Range("A2").AutoFilter Field:=1, Criteria1:=sCod_PF

                            

                ' Copia

                .Range("A2").SpecialCells(xlCellTypeVisible).Copy

                            

                'Incolla nel nuovo file

                Set wkNew = Workbooks.Add

                wkNew.Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

                wkNew.Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

                            

                'La riga qui sotto cancella le colonne che non si vogliono nel nuovo excel

                wkNew.Worksheets(1).Range("A2").Select

                lRigaNew = wkNew.Worksheets(1).Range("A" & wkNew.Worksheets(1).Rows.Count).End(xlUp).Row

                wkNew.Worksheets(1).Rows((lRigaNew + 1) & ":65536").Delete Shift:=xlUp

                wkNew.SaveAs Filename:="C:\PDF" & Left(Trim(sCod_PF), 1) & "_00" & Right(Trim(sCod_PF), 5) & "_2015_10_CF.xls"

            

                wkNew.Worksheets(1).ExportAsFixedFormat Type:=xlTypePDF, _

    Filename:="C:\PDF" & Left(Trim(sCod_PF), 1) & "_00" & Right(Trim(sCod_PF), 5) & "_2015_10_CF.pdf", _

    Quality:=xlQualityStandard, _

    OpenAfterPublish:=False

                

                

                wkNew.Close

                Set wkNew = Nothing

            Next 

    Se i nuovi workbook vengano creati, e quindi che non ci siano problemi di nomi, percorsi o diritti, , non ci dovrebbe essere un problema salvando gli stessi file nella stessa directory utilizzando il tuo codice per salvarli sotto la forma pdf  e  il codice funziona per me.

    Inoltre, se ci fosse un problema mi aspetterei un messaggio di errore, a meno che non ci fosse un gestore di errori.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento