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.
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→