Generare da stampa unione più documenti pdf

Anonimo
2012-12-12T19:27:39+00:00

Ho fatto una stampa unione (xls+word) al fine di generare fatture.

adesso dovrei per ogni fattura generare un pdf e nominare il relativo pdf, al fine di inviarla al cliente.

Questa procedura per le 40 fatture è comunque onerosa in quanto dovrei per ogni singola fattura stamparla in pdf salvarla sul dekstop e naturalmente nominarla secondo determinati criteri.

E' possibile dal documento di stampa unione generare in automatico le 40 fatture in formato pdf e possibilmente nominare i file secondo determinati criteri?

es.

fatt-30-12-dicembre-2012-cliente-rossi.pdf

Grazie!

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
Risposta accettata dall'autore della domanda
Anonimo
2012-12-13T00:32:02+00:00

Ciao RichyVC

Intendi qualcosa del genere?

' Modulo1 - Modulo

'

Option Explicit

Public Sub Test()

On Error GoTo ErrH

Dim mm As Word.MailMerge

Dim i

    Application.ScreenUpdating = False

    Set mm = ThisDocument.MailMerge

    With mm

      .Destination = wdSendToNewDocument

      With .DataSource

        For i = 1 To .RecordCount

          .FirstRecord = i

          .LastRecord = i

          mm.Execute

          With Application.ActiveDocument

            .SaveAs "D:\Percorso" & Format(i, "0000") _

                  , wdFormatPDF _

                  , AddToRecentFiles:=False

            .Saved = True

            .Close

          End With

        Next

      End With

    End With

ExitProc:

    Application.ScreenUpdating = True

    Set mm = Nothing

    Exit Sub

ErrH:

    MsgBox Err.Description

    Resume ExitProc

End Sub

La risposta è stata utile?

30+ persone hanno trovato utile questa risposta.
0 commenti Nessun commento

40 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-03-16T20:29:46+00:00

    Ciao, 

    ho provato ad usare tutte le soluzioni proposte in questo thread ma nessuna mi stampa i diversi file .pdf

    che cosa c'è di sbagliato nel comando?

    Perché a volte mi dice oggetto inesistente? Che oggetto è inesistente?

    Uso un file word in versione macro, che usa come sorgente dati un file excel

    Caso 1:

    ' Modulo1 - Modulo

    '

    Option Explicit

    Public Sub Test2()

    On Error GoTo ErrH

    Dim objWdMailMerge  As Word.MailMerge

    Dim lngRecNum       As Long

    Dim strPath         As String

    Dim strFilename     As String

        Application.ScreenUpdating = False

        strPath = "**C:\Ste\Work\Messa a Disposizione**"

        Set objWdMailMerge = ThisDocument.MailMerge

        With objWdMailMerge

          .Destination = wdSendToNewDocument

          With .DataSource

            .ActiveRecord = wdLastRecord

            lngRecNum = .ActiveRecord

            .ActiveRecord = wdFirstRecord

            Do

              .FirstRecord = .ActiveRecord

              .LastRecord = .ActiveRecord

              strFilename = .DataFields("Nome").Value

              If Len(strFilename) Then

                strFilename = strPath & strFilename

                objWdMailMerge.Execute

                With ActiveDocument

                  .SaveAs strFilename, wdFormatPDF, AddToRecentFiles:=False

                  .Saved = True

                  .Close

                End With

              End If

              If .ActiveRecord = lngRecNum Then Exit Do

              .ActiveRecord = wdNextRecord

            Loop

          End With

        End With

    ExitProc:

        Application.ScreenUpdating = True

        Set objWdMailMerge = Nothing

        Exit Sub

    ErrH:

        MsgBox Err.Description

        Resume ExitProc

    End Sub

    Caso 2:

    ' Modulo1 - Modulo

    '

    Option Explicit

    Public Sub Test()

    On Error GoTo ErrH

    Dim mm As Word.MailMerge

    Dim i As Long

    Dim s As String

        Application.ScreenUpdating = False

        Set mm = ThisDocument.MailMerge

        With mm

          .Destination = wdSendToNewDocument

          With .DataSource

            For i = 1 To .RecordCount

              .FirstRecord = i

              .LastRecord = i

              mm.Execute

                s = "**C:\Ste\Work\Messa a Disposizione**"

                s = s & "Ste.F"

                s = s & "_"

                s = s & "MAD"

                s = s & "_"             

                s = s & .DataFields(.FieldNames("Nome")).Value

                With Application.ActiveDocument

                  .SaveAs s _

                        , wdFormatPDF _

                        , AddToRecentFiles:=False                  , wdFormatPDF _

                      , AddToRecentFiles:=False

                .Saved = True

                .Close

              End With

            Next

          End With

        End With

    ExitProc:

        Application.ScreenUpdating = True

        Set mm = Nothing

        Exit Sub

    ErrH:

        MsgBox Err.Description

        Resume ExitProc

    End Sub

    CASO 3

    anche provando con quella di seguito, non so cosa e come modificare!!

    1. Sub Unione_in_pdf()
    2. Dim fd As FileDialog
    3. 'Crea un oggetto FileDialog per scegliere la cartella in cui salvare i file
    4. Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    5. With fd
    6. 'Usa il metodo Show per mostrare la finestra di dialogo e restituire l'azione dell'utente
    7. If .Show = -1 Then
    8. For Each vrtSelectedItem In .SelectedItems
    9. 'vrtSelectedItem è una stringa che contiene l'indirizzo di ogni elemento selezionato.
    10. 'E' possibile usare qualsiasi funzione di I/O sui file utilizzando questo indirizzo.
    11. SelectedPath = vrtSelectedItem
    12. Next vrtSelectedItem
    13. Else
    14. MsgBox ("Nessuna cartella è stata selezionata.")
    15. Exit Sub
    16. End If
    17. End With
    18. 'Imposta la variabile oggetto a Nothing
    19. Set fd = Nothing
    20. Application.ScreenUpdating = False
    21. MainDoc = ActiveDocument.Name
    22. ChangeFileOpenDirectory SelectedPath
    23. For i = 1 To ActiveDocument.MailMerge.DataSource.RecordCount
    24. With ActiveDocument.MailMerge
    25. .Destination = wdSendToNewDocument
    26. .SuppressBlankLines = True
    27. With .DataSource
    28. .FirstRecord = i
    29. .LastRecord = i
    30. .ActiveRecord = i
    31. 'Utilizza alcuni campi del file sorgente per impostare il nome del file pdf
    32. 'IMPORTANTE: tali campi vanno personalizzati in base a quelli effettivamente
    33. 'presenti nella sorgente dati
    34. docName = "Lettera_" & .DataFields("Nominativo").Value & "_" & .DataFields("ID").Value & ".pdf"
    35. End With
    36. .Execute Pause:=False
    37. Application.ScreenUpdating = False
    38. End With
    39. ActiveDocument.ExportAsFixedFormat OutputFileName:=docName, _
    40. ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
    41. wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
    42. Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
    43. CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
    44. BitmapMissingFonts:=True, UseISO19005_1:=False
    45. ActiveWindow.Close SaveChanges:=False
    46. Next i
    47. Application.ScreenUpdating = True
    48. End Sub

    Che cosa sbaglio? Perché mi salva un solo file in Word e non in .pdf, relativo solo alla prima riga della stampa unione?

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2013-03-12T16:13:22+00:00

    Ciao,

    prima di tutto ti volevo ringraziare per quetsa piccola nozione.... è una mano santa.

    Io però ho ancora un problemino:

    i nomi del campo ad esempio "FattNum" mi rimane sempre lo stesso (quello del primo  stampa unione) e cosi mi crea sempre un solo pdf (quello del primo).

    Io vedo che la macro lavora per tutta l'unione, ma poi alla fine ho solo il pdf con la prima unione

    Come posso fare??? grazie

    Spero di essere stato abbastanza chiaro...

    GRAZIE MILLE E IMPORTANTISSIMO RIUSCIRE A STAMPARE QUESTI PDF PER ME

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-02-04T19:49:44+00:00

    Grazie Maurizio,

    Funziona alla perfezione!

    Solo una cosa attualmente mi salva le fatture e le nomina tutte 0001.pdf, 0002.pdf etc..

    Se invece volessi che il nome delle fatture coincida ad al campo F del file XLS appartenente al record della propria fattura cosa occorre fare?

    Grazie!

    Riccardo

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-01-30T17:34:34+00:00

    Ciao Marizio,

    Grazie per la risposta anche se la leggo solo adesso.

    Scusa ma dove devo incollare il tuo codice all'interno di word per vedere e mi genera correttamente le 40 fatture?

    Grazie ancora!

    RichyVC

    La risposta è stata utile?

    0 commenti Nessun commento