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
    2013-01-30T18:03:57+00:00

    Ciao RichyVC,

    fai così:

    1. Copia il codice che ho postato, Da:

    ' Modulo1 - Moduloa:

    End Sub 2. Apri una copia deldocumento di stampa unione 3. ALT+F11 4. Inserisci

    Modulo 5. CTRL+a (per selezionare l'eventuale testo già presente) 6. CTRL+V (cioè incolla) 7. Sostituisci il mio percorso per i file pdf:

    "D:\Percorso"

    con il tuo 8. Debug

    Compila Project 9. File

    Salva <nome_del_documento> 10. ALT+F11 11. ALT+F8 12. Seleziona la macro Test

    [ Esegui ]

    La risposta è stata utile?

    30+ persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2015-07-29T15:17:52+00:00

    Io sono riuscito a risolvere la questione aggiungendo

    .ActiveRecord = i

    dopo la riga con

    .LastRecord = i

    Spero possa esservi utile.

    Marco

    La risposta è stata utile?

    2 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2013-02-05T06:18:55+00:00

    Ciao RichyVC,

    prima di tutto quel campo F dovrà essere compreso fra quelli della stampa unione. Per rifarci al tuo esempio iniziale di nome di documento:

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

    ipotizzando la presenza dei tre campi di stampa unione:

    • RagSoc
    • FattNum
    • FattData

    potresti aggiungere la variabile di tipo stringa e di nome "s" alle definizioni iniziali della routine, così:

    • Dim mm As Word.MailMerge

    Dim i As Long

    Dim s As String

    quindi la parte iniziale del blocco di istruzioni per il salvataggio in formato pdf da così:

    • With Application.ActiveDocument

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

                      , wdFormatPDF _

                      , AddToRecentFiles:=False

    potrebbe diventare così:

    • s = "D:\Percorso"

                s = s & "Fatt-"

                s = s & Format$(.DataFields(.FieldNames("FattNum")).Value _

                              , "0")

                s = s & "-"

                s = s & Format$(.DataFields(.FieldNames("FattData")).Value _

                              , "dd-mmmm-yyyy")

                s = s & "-cliente-"

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

                With Application.ActiveDocument

                  .SaveAs s _

                        , wdFormatPDF _

                        , AddToRecentFiles:=False

    La risposta è stata utile?

    2 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  4. Anonimo
    2013-03-22T08:57:45+00:00

    Ciao vence82,

    sperimenta con questa versione aggiornata, che avevo già postato in altro thread. Questa considera anche un eventuale filtro.

    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:\Documents and Settings\vince\Desktop\ok"

        Set objWdMailMerge = ThisDocument.MailMerge

        With objWdMailMerge

          .Destination = wdSendToNewDocument

          With .DataSource

            .ActiveRecord = wdLastRecord

            lngRecNum = .ActiveRecord

            .ActiveRecord = wdFirstRecord

            Do

              .FirstRecord = .ActiveRecord

              .LastRecord = .ActiveRecord

              strFilename = .DataFields("matricola").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

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento