Newsgroup: it.comp.appl.access
Titolo: Pilotare tabella Word

Con A2000 scrivo su campi testo in un  doc. di Word e vado che e' un
piacere.
Ora pero' da Access, devo generare e riempire una tabella Word.
Sul Doc, io mi trovo il "fac-simile" di una riga, cioe' dei campi testo
formattati e posizionati dall'utente, e devo generare una tabella ripetendo
quello schema di riga.
Forse potrei copiare la riga e incollarla sotto generando una riga alla
volta, ma sono a digiuno di Word e di codice Word, ho provato il generatore
di macro ma e' una tragedia.
Dove posso trovare qualche esempio di come si gestisce (add/Del/Copy/Paste)
la riga di una tabella Word, usando access?
Grazie & Ciao
U.
----------------------
Niente e' piu' simile all'identico di cio' che e' uguale alla stessa cosa.
(Jacovitti)


Una serie di consigli:
- da word avvii il registratore di macro e registri ogni movimento simulando
quello che dovrebbe fare VBA (da access); poi analizzi il codice e lo
modifichi all'uopo.
- nel documento word puoi inserire un campo DATABASE (vedi help word o sito
comune 
www.sitocomune.com
).
- consultare il modello ad oggetti di word.
- puoi analizzare la routine di esempio che ti propongo.
'------- inizio Es.--------
'--------------
Sub stampaDettaglio()
'gestisco l'errore altrimenti rimango in mutande
On Error GoTo stampaDettaglio_err
'chiamiamo word e per ora non lo rendiamo visibile
Dim oApp As Word.Application
Set oApp = CreateObject("Word.Application")
oApp.Visible = True
'oggetto contenente il recordset del Dettagglio
Dim rstDett As Recordset
'variabile contenente l'istruzione sql
Dim stringaSql As String
'apro il modello della fattura
oApp.Documents.Open "c:\documenti\provaMailmerge.doc"
'eseguo la stampa unione dell'intestazione con output su un nuovo documento
With oApp.Documents(1).MailMerge
    .Destination = wdSendToNewDocument
    .Execute
End With
'attivo il documento creato
oApp.Windows(2).Activate
'cerco la stringa "Elenco"
oApp.Selection.Find.ClearFormatting
With oApp.Selection.Find
    .Text = "Elenco"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
oApp.Selection.Find.Execute
'mi creo la query che mi restituisce il dettaglio della fattura
stringaSql = "Select numero, testo, data, contatore From q_elenco2 Where
numero = 22"
'mi prendo il recordset
Set rstDett = CurrentDb.OpenRecordset(stringaSql)
'tanto pe' nun sape' ne' legge ne' scrive
rstDett.MoveLast
rstDett.MoveFirst
'inserisco la tabella con X colonne, intestazione Y righe
oApp.ActiveDocument.Tables.Add Range:=oApp.Selection.Range,
NumRows:=rstDett.RecordCount, NumColumns:=4
'tabella senza griglia
oApp.Selection.Tables(1).Borders.Enable = False
'scrivo l'intestazione della tabella
With oApp.Selection
    .TypeText Text:="Numero"
    .MoveRight Unit:=wdCell
    .TypeText Text:="Testo"
    .MoveRight Unit:=wdCell
    .TypeText Text:="Data"
    .MoveRight Unit:=wdCell
    .TypeText Text:="Contatore"
End With
'scrivo il dettaglio della fattura
Do While Not rstDett.EOF
    With oApp.Selection
        .MoveRight Unit:=wdCell
        .TypeText Text:=rstDett(0)
        .MoveRight Unit:=wdCell
        .TypeText Text:=rstDett(1)
        .MoveRight Unit:=wdCell
        .TypeText Text:=Format(rstDett(2), "dd mmmm yyyy")
        .MoveRight Unit:=wdCell
        .TypeText Text:=Format(rstDett(3), "#,###")
    End With
    rstDett.MoveNext
Loop
'posso visualizzare il risultato per un controllo
oApp.Visible = True
'stampo il documento appena creato
oApp.ActiveDocument.PrintOut
'chiudo il documento senza salvarlo
oApp.Windows(1).Close SaveChanges:=wdDoNotSaveChanges
'chiudo il modello della fattura senza salvarlo
oApp.Windows(1).Close SaveChanges:=wdDoNotSaveChanges
'chiudo word
oApp.Quit
'chiudo il recordset
rstDett.Close
'rilascio gli oggetti
Set oApp = Nothing
Set rstDett = Nothing
MsgBox "Stampa terminata."
stampaDettaglio_exit:
    Exit Sub
stampaDettaglio_err:
    oApp.Visible = True
    MsgBox Err.Number & ", " & Err.Description
End Sub
'--------------
Funziona cosě; devi inserire nel documento word la parola "Elenco" dove vuoi
far creare la la tabella con i dati presi da access.
Devi togliere (se non ti interessa) la parte di codice che esegue il
mailmerge...
'-------- fine Es. ----------
Ciao.
--
Sergio MAZZA