Creare Documenti Word con Access

Programmando una finestra di Access con il linguaggio VBA ( Visual Basic for Application ), utilizzato in tutto Office per scrivere le macro, è anche possibile esportare i dati da una o più tabelle ad un documento Word tramite un modello con i campi modulo. Vediamo il procedimento con i passi principali. Per prima cosa dobbiamo aprire a runtime tramite COM un oggetto del nostro modello e creare al volo un documento, per fare questo è richiesto come riferimento l’oggetto Word ovviamente, in scrittura macro in menu strumenti -> riferimenti, trovare Word Object o qualcosa di simile nell’oceano di oggetti COM e spuntarlo.

Dim myApp As Word.Application, myDoc As Word.Document
Set myApp = CreateObject("Word.Application")
Set myDoc = myApp.Documents.Add("miomodello.dot")

Con la prima riga di codice abbiamo dimensionato un oggetto myApp di tipo Word.Application per gestire la finestra principale di Word ed un oggetto myDoc di tipo Word.Document per gestire il documento con i campi modulo. Nella riga successiva istanzio la variabile myApp e creo l’oggetto Application di Word e nella terza inizializzo il mio documento con il mio modello.

Dim myData As DAO.Database, myRec As DAO.Recordset
Set myData = CurrentDb
Set myRec = myData.OpenRecordset("SELECT * FROM Tabella WHERE IDValore = X)

La prima riga di istruzioni dimensiona una variabile oggetto myData di tipo DAO.Database e myRec di tipo DAO.Recordset, anche per queste istruzioni servono i riferimenti agli oggetti DAO ( Data Access Object ), il vecchio modo di accedere ai dati di Microsoft, nell’elenco dei riferimenti. La seconda riga assegna il database corrente alla variabile myData, mentre la terza riga apre la connessione alla tabella ( nell’esempio ho preso una tabella generica ) dei dati selezionando i valori con una istruzione SQL ( Structured Query Language ) di cui abbiamo parlato in questo articolo.

myDoc.FormFields("Nome Campo Modulo").Result = myRec![Nome Campo Tabella]

Quest’ultima istruzione consente di inserire al posto del campo modulo “Nome Campo Modulo” il valore del campo “Nome Campo Tabella” del database ed il gioco è fatto, tutto con il VBA. Alla fine occorre chiudere le risorse allocate, sia il database che l’applicazione Word e mostrare l’applicazione di Word in tutto il suo splendore con un documento riempito con i dati provenienti dal database.

myApp.Visible = True

myRec.Close
Set myData = Nothing
Set myRec = Nothing
Set myDoc = Nothing
Set myApp = Nothing

Volendo si può anche tenere invisibile l’applicazione Word e stampare al volo il documento e poi ricordarsi di chiudere l’applicativo Word con myApp.Quit nel nostro caso. Se desiderate avere maggiori informazioni o discutere con altri e con me di questo argomento potete visitare il nostro forum sulla programmazione.

Di Giampaolo Rossi

Sviluppatore software da oltre 16 anni.

2 commenti

  1. Molto ben fatto l’articolo e accurate le indicazioni di programmazione.Un unico, sconcertante neo: SQL non sta per Standard Query Language, ma per Structured Query Language

I commenti sono chiusi.