Pubblicato il 27 Luglio 2020 da Maurizio Matetich

Le pale eoliche permettono di convertire il vento in energia.

Con Microsoft Access puoi creare i report per visualizzare meglio le informazioni e per stamparle. Alle volte però hai la necessità di convertire i report in Word.
Convertire un report è un’operazione abbastanza semplice ma non sempre viene mantenuta la formattazione del documento di partenza.

Vedremo come convertire velocemente il report in Word e poi vedremo anche come mantenere la formattazione e gli elementi grafici. In quest’ultimo caso sarà necessario utilizzare i modelli di Word e un po’ di codice VBA.

Convertire un report in un file di testo oppure in Word.

Quando sei nell’anteprima del report, in alto a destra, nel raggruppamento Dati, hai i pulsanti:

File di testo: ti permette di convertire il report in un file con estensione TXT

Word: ti permette di convertire il report in un file con estensione RTF

Office online - convertire un report in Word 01

Ti faccio notare che se utilizzi la versione di Access 2013 o 2016 avrai il pulsante Altro e dentro ci sarà il comando Word

Office online - convertire un report in Word 02

Dopo aver selezionato il comando Word ti verrà chiesto dove vuoi salvare il file:

Office online - convertire un report in Word 03

Facendo clic su Sfoglia puoi scegliere il percorso di salvataggio. Puoi anche aprire il file al termine dell’esportazione facendo clic sull’apposito flag. A questo punto facendo clic su OK verrà creato il file con estensione RTF che potrà essere aperto e modificato in Word.

Ti faccio notare che questa operazione è molto veloce ma non mantiene la formattazione del report di partenza. In particolare se il report contiene un logo oppure delle linee o degli elementi grafici, questi non verranno esportati in Word.

Quindi, ad esempio, se con Access hai creato una fattura con la sua grafica e il logo, quando la esporterai in Word perderai tutta la grafica e avrai solo il testo. Nell’immagine sottostante puoi vedere a sinistra il report di Access e a destra l’esportazione finale in Word.

Office online - report AccessOffice online - report Access convertito in Word

E’ possibile ottenere il documento Word perfettamente uguale al report Access? la risposta è si ma devi fare un po’ di lavoro in più utilizzando anche i comandi VBA. Se non conosci il linguaggio VBA oppure vuoi approfondire l’argomento, ti suggerisco il mio corso online sul linguaggio VBA

Convertire un report mantenendo la formattazione

Vediamo adesso quali sono i passaggi da fare per poter esportare un report Access in Word senza perdere il logo e la parte grafica.

Per prima cosa devi creare un modello in Word. Nel modello inserirai il logo e tutti gli elementi grafici che ti servono. Ricordati che i modelli Word hanno l’estensione .dotx.

Adesso nel modello Word aggiungi il tuo logo e poi devi aggiungere un segnalibro per ogni informazione che vuoi inserire.

Le informazioni che potrai inserire nel modello Word devono essere presenti in una tabella di Access.

Ad esempio supponiamo di avere una tabella Access, che chiamiamo Fatture, con i dati di un nostro cliente e i dati di una fattura. Quindi nella tabella abbiamo i campi: RagioneSociale, Indirizzo, Cap, Città …. ma anche NumeroFattura, DataFattura …

Nel modello Word devi inserire un segnalibro per la ragione sociale, un segnalibro per l’indirizzo, un segnalibro per il numero fattura e così via. I segnalibri si inseriscono dal menu Inserisci e poi clic su Segnalibro. Ad ogni segnalibro devi dare un nome. Per semplicità utilizza lo stesso nome del campo Access. Poi fai clic su Aggiungi.

Office online - segnalibro Word

Dopo aver aggiunto il segnalibro … non vedrai niente ;-). Nessuna paura!

Per visualizzare i segnalibri devi fare clic su File – Opzioni e poi clic su Impostazioni Avanzate. Qui nella zona chiamata “Visualizzazione del contenuto del documento” devi mettere la spunta su “Mostra segnalibri”.

Otterrai questa situazione dove i segnalibri sono evidenziati con dei “trattini verticali”:

Office online - evidenziare i segnalibri

Ricordati di inserire un segnalibro per ogni campo che devi visualizzare nel documento Word.

A questo punto vai in un qualsiasi modulo di Access, fai clic su Strumenti e poi clic su Riferimenti. Scegli il riferimento “Microsoft Word xx Object Library” dove xx è la versione di Word che utilizzi

Office online - inserire il riferimento a Word

Sei stanco? fai una breve pausa con un buon caffè perché tra poco si inizierà a giocare duro!

Office online - pausa caffè 01

Le istruzioni VBA per la conversione in Word

Era buono il caffè? Adesso iniziamo!

Ti ricordo che in caso di necessità puoi utilizzare la mia consulenza su Access.

In una maschera Access aggiungi un pulsante che eseguirà la conversione del report in Word. Quindi ricollegandoci all’esempio abbiamo una maschera che visualizza i dati di una fattura e in questa maschera aggiungiamo un pulsante che chiameremo “Stampa Word”. Sull’evento “su clic” inserisci il seguente codice:

Dim Wrd As Word.Application, Doc As Word.Document
Dim Rst As DAO.Recordset
Dim Modello As String, NomeFile As String, i As Integer
Dim ReplSel As Boolean
Dim TempTesto, PercorsoModelli , ModelloFattura, PercorsoSalvaFatture As String

PercorsoModelli =”c:\cartella-salvataggio-modelli\”
ModelloFattura = “fattura.dotx”
PercorsoSalvaFatture =”c:\cartella-salvataggio-fatture\”

‘si collega con un modello word presente nella cartella
Modello = PercorsoModelli & ModelloFattura

On Error Resume Next
‘cerca un’istanza di Word già aperta
Set Wrd = GetObject(, “Word.Application”)
If Err.Number = 429 Then
‘se c’è stato un errore è perché Word non era già aperto, altrimenti aprilo adesso
Set Wrd = CreateObject(“Word.Application”)
End If

On Error GoTo 0 ‘ripristina la segnalazione degli errori

‘rendi visibile la finestra di Word:
Wrd.Visible = True

‘attiva Word e portalo in primo piano:
Wrd.Activate

‘abilita l’opzione “Sostituisci la selezione”. Se non fosse
‘attiva, i campi modulo rimarrebbero all’interno del testo.
ReplSel = Wrd.Options.ReplaceSelection
Wrd.Options.ReplaceSelection = True

‘Apri un nuovo documento basato sul modello:
Set Doc = Wrd.Documents.Add(Modello)
‘attivalo e portalo in primo piano:
Doc.Activate

‘seleziona i bookmark (segnalibri) presenti in Word e li sovrascrive con il contenuto dei campi della tabella
Doc.Bookmarks(“RagioneSociale”).Select
Wrd.Selection.TypeText DLookup(“[RagioneSociale]”, “Fattura”, “[IDFattura] = ” & Forms!Fatture!IDFattura)
Doc.Bookmarks(“NumeroFattura”).Select
Wrd.Selection.TypeText DLookup(“[NumeroFattura]”, “Fattura”, “[IDFattura] = ” & Forms!Articoli!IDFattura)

‘… aggiungi tutti gli altri segnalibri che hai inserito nel modello Word

‘avvisa l’utente che l’esportazione è terminata
Wrd.Application.WordBasic.MsgBox “Preparazione fattura conclusa con successo !”, “Gestione azienda”

‘Per spostare il cursore all’inizio del documento
Wrd.Selection.HomeKey Unit:=wdStory

‘per SALVARE il documento come Fattura_NumeroFattura.docx
TempTesto = DLookup(“[NumeroFattura]”, “Fattura”, “[IDFattura] = ” & Forms!Fatture!IDFattura)

NomeFile = PercorsoSalvaFatture & “Fattura_” & TempTesto & “.docx”

Doc.SaveAs NomeFile

On Error Resume Next ‘se l’utente annulla il salvataggio si genera un errore
‘Doc.Close
‘chiusura di Word: se chiudo word prima che la stampa sia completata, perdo la stampa
‘Wrd.Quit
On Error GoTo 0

‘azzera le variabili oggetto
Set Doc = Nothing
Set Wrd = Nothing

‘NB: L’azzeramento degli oggetti Doc e Wrd senza la loro preventiva chiusura (Doc.Close e Wrd.Quit)
‘fa sì che dopo l’esportazione dei dati Word e il documento rimangano aperti

Conclusioni

In questo articolo ti ho mostrato come esportare un report Access in Word mantenendo la formattazione. L’operazione non è molto complicata. Nel modello Word è importante inserire tutti i segnalibri necessari e soprattutto inserirli nelle posizioni corrette.

Poi in Access, con delle semplici istruzioni, puoi “mettere in collegamento” il contenuto dei campi della tua tabella con i segnalibri di Word. Fai attenzione ai nomi dei campi e ai nomi dei segnalibri altrimenti ti verranno segnalati degli errori.

Fammi sapere se ci sei riuscito e quali difficoltà hai trovato. Ti ricordo che se vuoi approfondire meglio il linguaggio VBA puoi iscriverti al mio corso online.

Se invece vuoi un aiuto personalizzato puoi utilizzare la mia consulenza personalizzata