Newsgroup: it.comp.lang.visual-basic
Titolo: [VBA] Nuova pagina word

salve
ho creato una procedura di stampa-tipo con word
questo č il codice della sub
prendo i dati dei campi da inserire da una list che ho compilato da
procedura guidata
e li assegno a dei bookmarks con nome uguale
Dim MyWord As New Word.Application
Data1.RecordSource = Select_Per_Stampa_Tipo
Data1.Refresh
Do While Not Data1.Recordset.EOF
    MyWord.Documents.Add Template:=App.Path & "\contratto.dot"
    MyWord.Visible = True
    For I = 0 To List1.ListCount - 1
        inserisco = Data1.Recordset.Fields(List1.List(I))
        MyWord.ActiveDocument.Bookmarks(List1.List(I)).Range.InsertAfter
inserisco
    Next
    Data1.Recordset.MoveNext
Loop
Set MyWord = Nothing
tutto funziona ma....
in questo modo creo un nuovo documento per ogni record passato
io vorrei creare un solo documento con piů pagine
qualcuno sa darmi una mano?
grazie
max

 qualcuno sa darmi una mano?
Ad una occhiata veloce mi pare che usi una istanza locale di word e usi
parola "new". In pratica apri un nuovo word ogni volta.
Cerca su MSDN esempi con il GETOBJECT legato a excel o word.
In pratica cosě istanzi il motore una volta e probabilmente risolvi il
problema.
scusa per la fretta,
D.

 io vorrei creare un solo documento con più pagine


vi ringrazio.......ma ho capito che non è questa la via per fare quello che
voglio
in poche parole volevo ricreare una stampa unione da codice
devo studiarci sopra
grazie
max

 in poche parole volevo ricreare una stampa unione da codice
Hai prvato a fare uno script direttamente dentro Word?
IMHO E' probabilmente il modo migliore per capire come manipolare questo
preziosissimo motore.
Poi, se vuoi usarlo "da fuori", bastera' "tradurre" il codice e inserirlo in
un programma apposito.
Ciao,
D.

si ho fatto una cosa simile più che altro per vedere quali sono i metodi e
le proprietà utilizzate da word per fare la stampa unione.
la proprietà che si utilizza è MailMerge di Activedocument
e così sono riuscito a fare quello che volevo..... ma ieri sera, appena
finito di scrivere il codice, provo e mi rendo conto che word è troppo lento
per usarlo a mo' di Crystal report.
in sostanza se devo stampare più di 100 pagine (è una specie di carta
intestata con tanto di logo)  mi si comincia a rallentare tutto il sistema e
mi si creano files enormi.
posto il codice casomai dovesse servire a qualcuno.
Private Sub Stampa_Contratti_Click()
Dim MyWord As New Word.Application
MyWord.Documents.Open (App.Path & "\contratto.doc")
With MyWord
.ActiveDocument.MailMerge.OpenDataSource Name:=Path,
sqlstatement:=Select_Per_Stampa_Tipo
.Visible = True
    With .ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .MailAsAttachment = False
        .MailAddressFieldName = ""
        .MailSubject = ""
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute
    End With
    .ActiveWindow.ActivePane.VerticalPercentScrolled = 0
End With
End Sub
ciao
max


Per poter ottimizzare un po' la proceduta di scrittura di
un documento word ti conviene rendere invisibile
l'oggetto che credi (word) e salvare di tanto in tanto
il file in un file temporaneo.
Ciao, Francesco.