Come generare singoli file pdf con la stampa unione di Word, leggendo i dati da un file Excel.
Ipotizziamo di avere la necessità di creare degli attestati in Word leggendo i dati da un file Excel. Vogliamo ottenere un singolo file pdf per ogni nominativo presente nell’Excel.
So che con questo articolo faccio felici diverse mie corsiste e corsisti 🙂
Si parte da questo attestato…

e da questi dati Excel…

per arrivare a questo risultato…

Non dovrai installare nessun componente aggiuntivo. Dovrai solo copiare ed incollare in Word alcune righe di codice vba di una macro.
La soluzione consiste in due macro attività :
A. si eseguono tutti i passaggi classici della stampa unione ad eccezione dell’ultimo (“Finalizza ed unisci”)
B. si copia/incolla e si esegue una macro che si occuperà di completare la stampa unione creando tanti singoli file
Ti mostro i passaggi, dal primo all’ultimo. Se sai già muoverti con la stampa unione ti serviranno soprattutto i passaggi su come inserire la macro (attività B).
A. Stampa unione (tutti i passaggi classici fino al penultimo)
Partiamo aprendo l’attestato iniziale in Word che useremo come modello ed iniziamo la stampa unione dalla scheda ‘Lettere’, comando ‘Inizia stampa unione’. Scegliamo la voce ‘Lettere’.

Specifichiamo da dove leggere i dati: ‘Seleziona destinatari’, voce ‘Usa un elenco esistente…’.

Sfogliamo le nostre cartelle, troviamo il file che contiene i dati Excel da riportare in Word e facciamo doppio clic.

Word ci chiede di specificare da quale foglio deve leggere i dati (in questo caso ce n’è solo uno, il foglio ‘Elenco’, la cui prima riga contiene intestazioni)

Si decide poi quali sono i campi dell’Excel che ci interessano e in quali punti dell’attestato devono essere inseriti. Ci posizioniamo ad esempio prima della provvisoria scritta NOME e poi da ‘Inserisci campo unione’ scegliamo la colonna ‘Nome’.

Facciamo poi lo stesso con il campo ‘Cognome’ e poi con ‘Data_esame’.

Questo l’attestato con i campi inseriti e pronto per essere sfruttato dalla macro che inseriremo nei passaggi successivi.

B. Inserimento ed esecuzione della macro
Apriamo l’editor Visual Basic utilizzando insieme i tasti ALT ed F11. Attenzione al fatto che in alcuni portatili i tasti funzione (come F11) richiedono di tener premuto anche il tasto ‘fn’ (solitamente sulla tastiera in basso a sinistra).

Nel caso la fascia con lo sfondo bianco sulla sinistra non fosse presente, puoi renderla visibile da scheda ‘Visualizza’ voce ‘Gestione progetti’.

Per poter copiare del codice dobbiamo avere uno spazio disponibile. Lo si crea facendo clic con il tasto destro sul nome del nostro file (in questo caso la scritta ‘Project (Modello attestato)’. Dalla voce ‘Inserisci’ scegliamo ‘Modulo’.

Copia il seguente codice ed incollalo nel modulo appena creato (nello spazio bianco del modulo fai tasto destro ed incolla). L’immagine successiva mostra quel che dovresti ottenere.
Sub SalvaDocumentiStampaUnioneInPDF()
Dim i As Long
Dim Doc As Document
Dim MainDoc As Document
Dim FolderPath As String
Dim FirstName As String
Dim LastName As String
' Imposta la cartella di destinazione dove verranno salvati i documenti
FolderPath = "C:\Percorso\Cartella\" ' Sostituisci con il percorso della tua cartella
' Imposta il documento principale
Set MainDoc = ThisDocument
' Cicla attraverso ogni documento risultante dalla stampa unione
For i = 1 To MainDoc.MailMerge.DataSource.RecordCount
' Filtra il documento principale per mostrare solo il record corrente
MainDoc.MailMerge.DataSource.ActiveRecord = i
MainDoc.MailMerge.DataSource.FirstRecord = i
MainDoc.MailMerge.DataSource.LastRecord = i
' Esegue la stampa unione per il record corrente
MainDoc.MailMerge.Execute
' Ottieni il nome e il cognome dal record corrente
FirstName = MainDoc.MailMerge.DataSource.DataFields("Nome").Value ' Sostituisci "Nome" con il nome del campo nel tuo foglio Excel
LastName = MainDoc.MailMerge.DataSource.DataFields("Cognome").Value ' Sostituisci "Cognome" con il nome del campo nel tuo foglio Excel
' Salva il documento risultante in formato PDF con il nome composto da cognome_nome
Set Doc = ActiveDocument
Doc.SaveAs2 FileName:=FolderPath & LastName & "_" & FirstName & ".pdf", FileFormat:=wdFormatPDF
Doc.Close SaveChanges:=wdDoNotSaveChanges
Next i
End Sub
Nel codice c’è una riga che devi modificare. Dovrai specificare il percorso della cartella nella quale vuoi far creare i pdf. Cambia questa riga…

…specificando il percorso di una cartella già esistente (nel mio caso la cartella ‘Attestati’ creata all’interno di altre cartelle). Se hai dubbi sul percorso della tua cartella vai su gestione risorse, fai clic con il destro sulla tua cartella, voce ‘Proprietà ’ e ti apparirà il ‘Percorso’ da copiare ed incollare.

Come eseguire la macro? Ci sono due modi. Primo modo: freccina verde restando nell’editor oppure…

…da finestra di Word scheda ‘Visualizza’, voce ‘Visualizza macro’…

…selezionando la nostra macro (si chiama ‘SalvaDocumentiStampaUnionePDF’) e facendo clic sul pulsante ‘Esegui’.

La macro lavorerà per qualche secondo e noi otterremo il risultato desiderato!

Terminato il tutto, come facciamo a salvare il documento Word? Se ci proviamo veniamo avvisati che il formato del file va cambiato qualora desiderassimo salvare il codice inserito. Noi vogliamo salvare il codice e per questo rispondiamo ‘No’…

e nella finestra che compare scegliamo il formato ‘Documento di Word con attivazione macro‘.

In gestione risorse il file avrà anche un’icona diversa.

Quando riapriremo il file ci verrà chiesto di abilitare le macro (dovremo farlo se vogliamo usare di nuovo la nostra macro) e ci verrà anche proposta una strana finestra

Word ci sta chiedendo se vogliamo che aprendo venga mantenuta la connessione con il file Excel contenente gli indirizzi (risposta ‘Sì’) oppure se vogliamo che venga rimossa la connessione (risposta ‘No’).
Se rispondiamo ‘Sì’ (scelta più frequente) tutti i passaggi della stampa unione vengono mantenuti. Potremo così riapplicare il procedimento sui dati Excel che magari sono cambiati dall’ultima volta.
Se ‘No’ dovremo ripartire da zero. Verranno solo mantenuti nell’attestato quella sorta di ‘segnalibri’ sui campi prima inseriti. Ma, come vedi nell’immagine, tutti i comandi della stampa unione saranno grigi, come quando si parte da zero.

Spero che questo tutorial ti sia stato utile! Se hai dubbi o se vuoi solo esprimermi la tua felicità 🙂 scrivimi a samuele.agnolin@gmail.com



