Condividi tramite

macro VBA per esportazione in PDF

Anonimo
2016-11-01T19:05:15+00:00

Buonasera

vorrei risolvere un problema con un macro VBA per esportare un foglio di un file excel in PDF.

In pratica ho bisogno di esportare un foglio in PDF attribuendo, oltre ad un prefisso (LIC_ORD_), anche una data presa da una cella. Vi allego la macro che mi hanno aiutato a creare:

Sub exp_pdf_ORD()

Set WB = ThisWorkbook

fpath = WB.Path & ""

filenam = "LIC_ORD_"

Sheets("STA_ORD").Copy

fname = fpath & filenam & Format(Sheets("INS_ORD").Range("J10"), "yyyy-mm-dd") & ".pdf"

Sheets("STA_ORD").ExportAsFixedFormat Type:=xlTypePDF, Filename:=fname, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

ActiveWorkbook.Close SaveChanges:=False

End Sub

In pratica nel nome del file ci deve essere la data scritta nella cella J10 del foglio INS_ORD, ma per come è scritta la macro mi dà errore e non riesco a capire quale passaggio è sbagliato

Vi ringrazio per eventuali aiuti

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

3 risposte

Ordina per: Più utili
  1. Anonimo
    2016-11-02T01:06:30+00:00

    Ciao essegi75,

    vorrei risolvere un problema con un macro VBA per esportare un foglio di un file excel in PDF.

    In pratica ho bisogno di esportare un foglio in PDF attribuendo, oltre ad un prefisso (LIC_ORD_), anche una data presa da una cella. Vi allego la macro che mi hanno aiutato a creare:

    Sub exp_pdf_ORD()

    Set WB = ThisWorkbook

    fpath = WB.Path & ""

    filenam = "LIC_ORD_"

    Sheets("STA_ORD").Copy

    fname = fpath & filenam & Format(Sheets("INS_ORD").Range("J10"), "yyyy-mm-dd") & ".pdf"

    Sheets("STA_ORD").ExportAsFixedFormat Type:=xlTypePDF, Filename:=fname, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    ActiveWorkbook.Close SaveChanges:=False

    End Sub

    In pratica nel nome del file ci deve essere la data scritta nella cella J10 del foglio INS_ORD, ma per come è scritta la macro mi dà errore e non riesco a capire quale passaggio è sbagliato

    Prova qualcosa del genere:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub exp_pdf_ORD()

        Dim WB As Workbook

        Dim srcSH As Worksheet, nameSH As Worksheet

        Dim rngNome As Range

        Dim sPath As String, sSuffisso As String, sFilename As String

        Const sPrefisso As String = "LIC_ORD_"

        Const sFoglioSorgente As String = "STA_ORD"

        Const sFoglioNome As String = "INS_ORD"

        Const sCellaNome As String = "J10"

        Const sEstensione As String = ".pdf"

        Set WB = ThisWorkbook

        With WB

            sPath = .Path & ""

            Set srcSH = .Sheets(sFoglioSorgente)

            Set nameSH = .Sheets(sFoglioNome)

            Set rngNome = nameSH.Range(sCellaNome)

            sSuffisso = Format(rngNome.Value, "yyyy-mm-dd")

            sFilename = sPath & sPrefisso & sSuffisso & sEstensione

            srcSH.ExportAsFixedFormat Type:=xlTypePDF, _

                                      Filename:=sFilename, _

                                      Quality:=xlQualityStandard, _

                                      IncludeDocProperties:=True, _

                                      IgnorePrintAreas:=False, _

                                      OpenAfterPublish:=False

            .Close SaveChanges:=False

        End With

    End Sub

    '<<=========

    Eseguendo il codice, si crea un file pdf con un nome del tipo:

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2016-11-02T16:53:48+00:00

    Ciao essegi75,

    Ho copiato la macro così come l'hai scritta... come risultato ottengo:

    • si chiude il file excel ma non il programma
    • non viene creato nessun file pdf

    Non è che devo modificare qualcosa nella macro?

    Non mi pare che tu abbia richiesto la chiusura di Excel! Tuttavia, questo richiede una sola riga addizionale di codice e ho approfittato per sostituire la variabile fname con sFilename per accordarla con le mie dichiarazioni:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub exp_pdf_ORD()

        Dim WB As Workbook

        Dim srcSH As Worksheet, nameSH As Worksheet

        Dim rngNome As Range

        Dim sPath As String, sSuffisso As String, sFilename As String

        Const sPrefisso As String = "LIC_ORD_"

        Const sFoglioSorgente As String = "STA_ORD"

        Const sFoglioNome As String = "INS_ORD"

        Const sCellaNome As String = "J10"

        Const sEstensione As String = ".pdf"

        Set WB = ThisWorkbook

        With WB

            sPath = .Path & ""

            Set srcSH = .Sheets(sFoglioSorgente)

            Set nameSH = .Sheets(sFoglioNome)

            Set rngNome = nameSH.Range(sCellaNome)

            sSuffisso = Format(rngNome.Value, "yyyy-mm-dd")

            sFilename = sPath & sPrefisso & sSuffisso & sEstensione

            srcSH.ExportAsFixedFormat Type:=xlTypePDF, _

                                      Filename:=sFilename, _

                                      Quality:=xlQualityStandard, _

                                      IncludeDocProperties:=True, _

                                      IgnorePrintAreas:=False, _

                                      OpenAfterPublish:=False

            .Close SaveChanges:=False

        End With

    End Sub

    '<<=========

    A me il file originale viene chiuso, Excel viene chiuso ed un file pdf viene salvato con il nome LIC_ORD_ e la data della cella J10 del foglio INS_ORD:

    N.b.

    Dopo aver incollato il mio codice, bisogna salavare il file prima di eseguire il codice!

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-11-02T13:12:02+00:00

    Ho copiato la macro così come l'hai scritta... come risultato ottengo:

    • si chiude il file excel ma non il programma
    • non viene creato nessun file pdf

    Non è che devo modificare qualcosa nella macro?

    La risposta è stata utile?

    0 commenti Nessun commento