Newsgroup: it.comp.appl.access
Titolo: Inserire testo in documenti Word (con VBA da Access)

Un saluto a tutti.
Qual' e' secondo voi la tecnica piu' efficiente e affidabile per
avere gli stessi risultati che si hanno con la stampa unione ?
Fin ora facevo in questo modo
 objSelection.Find.Text = x
 objSelection.Find.Forward = True
 objSelection.Find.MatchWholeWord = True
 objSelection.Find.Replacement.Text = y
 objSelection.Find.Execute , , , , , , , , , , wdReplaceAll
(ovviamente il tutto e' immerso in un ciclo che definisce
la x e la y ad ogni iterazione)
Veramente, in access 2003 al posto di objselection, che e'
ad associazione tardiva, usavo oggetti dichiarati esplicitamente,
ma in access 2007 (chissa' perche') addirittura l' access mi
andava in crash, mentre in questo nuovo modo funziona, ma
francamente fa schifo, anche perche' non si riesce a tenere
il word "invisibile" fino a che l' operazione non termina, per cui
l' utente vede sfarfallii di documenti Word a gogo'.
Grazie.

Un saluto a tutti.





Grazie.
-----------
Se ti può essere utile ti posto una procedura che uso io. Si basa sui 
segnalibri preimpostati su un modello word (.dot).
L'ho ricavata da una manualetto di programmazione di base VBA di Access 2007 
(che non uso).
Nei riferimenti devi avere la libreria per Microsoft Word X.x Objects 
Library e Microsoft ActiveX Data Objects.
Non chiedermi oltre perché i miei limiti sono molto ristretti per cui non 
sarei in grado di aiutarti. Ti posso solo dire che io mi trovo molto bene 
per stampare diverse centinaia di lettere ricavando nomi e indirizzi da una 
listbox senza, ovviamente, visualizzarle a schermo.
Private Sub cmdPrint_Click()
'cicla sulla listbox e stampa le lettere corrispondenti alle righe 
selezionate
    Dim appWord As New Word.Application
    Dim sPath As String, i As Integer, DataCorr As Date
    DataCorr = Nz(Me!DataLett, "")
    sPath = CurrentProject.Path & "\Modelli\MiaLetteraModello.dot"
            For i = 1 To Me!list0.ListCount - 1
                If Me.list0.Selected(i) = True Then
                    With appWord
                        .Documents.Add sPath
                        .Selection.Goto wdGoToBookmark, Name:="Nome"
                        .Selection.TypeText Nz(Me.list0.Column(1, i), "")
                        .Selection.Goto wdGoToBookmark, Name:="Chi_è"
                        .Selection.TypeText Nz(Me.list0.Column(10, i), "")
                        .Selection.Goto wdGoToBookmark, Name:="Indirizzo"
                        .Selection.TypeText Nz(Me.list0.Column(13, i), "")
                        .Selection.Goto wdGoToBookmark, Name:="Città"
                        .Selection.TypeText Nz(Me.list0.Column(14, i), "")
                        .Selection.Goto wdGoToBookmark, Name:="DataLett"
                        .Selection.TypeText DataCorr
                        '.Visible = True        'visibile sullo schermo
                        .PrintOut Copies:=1    'stampa diretta
                        'Attende la fine della stampa
                        Do
                            If appWord.BackgroundPrintingStatus = 0 Then
                                .Documents.Close 
SaveChanges:=wdDoNotSaveChanges
                                Exit Do
                            Else
                                DoEvents
                            End If
                        Loop
                    End With
                End If
            Next
    appWord.Quit
    Set appWord = Nothing
End Sub
Ciao
Napi