Newsgroup: it.comp.appl.access
Titolo: automazione access-word

Buongiorno,
 
ho un db da cui prendo le informazioni e le passo ad un documento word 
con questa scrittura:
 
Private Sub cmdStampa_Click()
 
     Dim w As New Word.Application
     Dim nome_modello As String
 
     ' Se abbiamo salvato il modello nella stessa cartella del file di 
Access
 
     nome_modello = CurrentProject.Path & "\modbando.dotx"
     w.Visible = True
 
     ' Creo un nuovo documento dal modello
     w.Documents.Add Template:=nome_modello, NewTemplate:=False, 
DocumentType:=0
 
     ' Compilo i campi di Word (identificati tramite segnalibri) con i 
valori del database
 
     AggiornaCampo w, "bando", CStr(ID)
     AggiornaCampo w, "decreto", CStr(Me.Form!decreti!ID)
     AggiornaCampo w, "data", CStr(data)
 
 
     Set w = Nothing
 
End Sub
 
Private Sub AggiornaCampo(ByRef w As Word.Application, campo As String, 
valore As String)
     Const LUNGHEZZA_SEGNAPOSTO = 4
 
     w.ActiveDocument.Bookmarks(campo).Select
 
     ' Espando la selezione per eliminare i segnaposto
     w.Selection.Expand WdUnits.wdCharacter
     w.Selection.End = w.Selection.End + LUNGHEZZA_SEGNAPOSTO
 
     w.Selection.Text = valore
End Sub
 
e tutto funziona! quindi penso che copiare lo stesso codice in un nuovo 
db potrebbe farmi guadagnare tempo, per cui proseguo e modifico 
all'occorrenza il codice di cui sopra in questo modo:
 
Private Sub Comando41_Click()
 
 
     Dim w As New Word.Application
     Dim nome_modello As String
 
     ' Se abbiamo salvato il modello nella stessa cartella del file di 
Access
 
     nome_modello = CurrentProject.Path & "\lettera.dotx"
     w.Visible = True
 
     ' Creo un nuovo documento dal modello
     w.Documents.Add Template:=nome_modello, NewTemplate:=False, 
DocumentType:=0
 
     ' Compilo i campi di Word (identificati tramite segnalibri) con i 
valori del database
 
     AggiornaCampo w, "nominativo", CStr(Nominativo)
     AggiornaCampo w, "tutor", CStr(tutor)
     AggiornaCampo w, "data_visita", CStr(data_visita)
     AggiornaCampo w, "struttura", CStr(struttura)
 
     Set w = Nothing
 
End Sub
 
Private Sub AggiornaCampo(ByRef w As Word.Application, campo As String, 
valore As String)
     Const LUNGHEZZA_SEGNAPOSTO = 4
 
     w.ActiveDocument.Bookmarks(campo).Select
 
     ' Espando la selezione per eliminare i segnaposto
     w.Selection.Expand WdUnits.wdCharacter
     w.Selection.End = w.Selection.End + LUNGHEZZA_SEGNAPOSTO
 
     w.Selection.Text = valore
 
End Sub
 
 
ma la risposta è un errore "tipo definito dall'utente non definito", che 
non riesco a risolvere, cosa sto sbagliando oppure posso fare qualcosa 
per migliorare questa automazione?
 
grazie
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 

Riferimenti alla LIB MICROSOFT WORD, avendo sviluppato in modalità EARLYBINDING, cosa peraltro da non fare.
 
@Alex

 
come più volte scritto nel gruppo sono un dilettante, cortesemente 
chiedo un aiuto a risolvere, anche solo un consiglio mi farebbe piacere
 
grazie
Akery


 Akery
 
 
Quello che ti ho scritto è un aiuto...!
Qualsiasi "DILETTANTE" con un minimo di intraprendenza, digita su GOOGLE quello che ti ho suggerito: "MsAccess riferimenti libreria word"
ed ottiene questo:
 
https://support.office.com/it-it/article/aggiungere-librerie-di-oggetti-a-un-progetto-visual-basic-ed28a713-5401-41b0-90ed-b368f9ae2513
 
 
Non mi pare serva Zichichi...
 
@Alex


[risolto]
 
il problema non è il codice e nemmno il riferimento, il problema era il 
file, infatti, tutto riscritto in un nuovo file funziona, grazie per il 
supporto


Attenzione ugualmwnte all'uso di EarlyBinding... che è un errore comune tra i poco esperti...
 
@Alex