PDA

View Full Version : [WORD Lib] MailMerge


matpez
06-03-2009, 11:53
Ciao a tutti, ho un problema con la libreria WORD.

Sto facendo una StampaUnione da codice e va che è una meraviglia, unica pecca quando stampo utilizza come stampante predefinita quella del sistema.

Come faccio a fare aprire la schermata di selezioni della stampante in maniera tale che il documento stampi nella stampante scelta dall'utente? E che, cosa nn da poco, utilizzi i settaggi impostati in quella schermata (vedi colore/bianco nero, 2 fogli sulla stessa pagina e via dicendo)

HEEEEEEEEEEEEEEEEEEEEEEEEEELP!!!!!!!!!!!!!!!!!!! :confused:



Private Sub Command1_Click()

Dim oWord As Word.Application


Set oWord = New Word.Application

Call oWord.Documents.Open(Lettera quote 2008.doc")
oWord.Visible = True

Call oWord.ActiveDocument.MailMerge.OpenDataSource( _
"dbCentroEstivo.mdb", _
, , , True, _
, , , , , , "TABLE ANAG_FAMIGLIE", _
"SELECT * FROM ANAG_FAMIGLIE WHERE ID_FAMIGLIA = 1")


oWord.ActiveDocument.MailMerge.Destination = wdSendToNewDocument
Call oWord.ActiveDocument.MailMerge.Execute(True)

Call oWord.ActiveDocument.PrintOut

Call oWord.Quit(False)

Set oWord = Nothing

End Sub

FixFixFix
06-03-2009, 12:03
se usi .NET c'è la printdialog

matpez
06-03-2009, 12:18
anche in VB6 c'è... ma io vorrei usare tutti gli strumenti di word.application se fosse possibile. Terrei il tuo suggerimento come ultima risorsa :)

MarcoGG
08-03-2009, 13:33
Se usi VB6 hai grosso modo 2 strade :

1. Mostrare all'utente le Dialogs di Win :

'Semplice selezione stampante :
Dialogs(wdDialogFilePrintSetup).Show (False)

'Selezione stampante + Stampa :
Dialogs(wdDialogFilePrint).Show (False)

2. Utilizzare VB.Printer. Esempio :

'Oggetto VB.Printer :
Dim P As VB.Printer
'Lista Printers :
For Each P In VB.Printers
List1.AddItem (P.DeviceName)
Next

'Selezione Printer :
For Each P In VB.Printers
If P.DeviceName = List1.Text Then
MsgBox (List1.Text)
Set Printer = P
End If
Next

oWord.ActivePrinter = Printer.DeviceName
oWord.ActiveDocument.PrintOut

giocando poi con metodi e proprietà esposti da VB.Printer... ;)