Newsgroup: it.comp.appl.access
Titolo: Unione, Salva, Stampa

Sono riuscito, grazie al vostro preziosissimo aiuto, a realizzare una
machera che dopo l'inserimento dati, mi permette la stampa unione del
documento, il salvataggio in un file e la stampa vera e propria.
Potrei anche accontentarmi, ma sinceramente mi sembra che manchino alcuni
accorgimenti a mio parere utilissimi a questa applicazione (Se così la
vogliamo chiamare).
Per questo vi pongo un quesito complesso (almeno per me, ovvio):
Questo il codice per l'invio in stampa che utilizzo:
Private Sub Stampa_Click()
    Dim oApp As Word.Application
    Dim NomeCartella As String
    Set oApp = CreateObject("Word.Application")
    NomeCartella = Left(CurrentDb.Name, Len(CurrentDb.Name) -
Len(Dir(CurrentDb.Name)))
    Me.Form.Requery
oApp.Application.Documents.Open NomeCartella & "\Modulo_primo.doc", , , ,
"birillo", , , "birillo"
'se voglio word visibile o no
oApp.Visible = False
oApp.ActiveDocument.MailMerge.Execute
oApp.ActiveDocument.SaveAs FileName:=NomeCartella & "\Atti\Atto " &
Me.mittente.Value & " - " & Me.cedente.Value & ".doc"
'stampa le pagine
oApp.ActiveDocument.PrintOut False
'chiudo word
oApp.Quit SaveChanges = True
Set oApp = Nothing
'invio un messaggio di conferma
MsgBox "La stampa è stata inizializzata ed il file 'Atto " &
Me.mittente.Value & " - " & Me.cedente.Value & ".doc' è stato salvato nella
cartella 'Atti' con sucesso", vbInformation, "Informazione"
End Sub
Pensate vada bene questo codice? si può fare di meglio?
A questo punto le complicazioni che vorrei aggiungere sono:
1. E' possibile far scegliere la stampante (ed anche quindi alcuni settaggi
tipici della mashera stampante) con cui stampare all'utente in fase di
printout ?
2. E' possibile ottimizzare questo codice (non è velocissimo
nell'esecuzione) ?
GRAZIE a tutte le anime pie che vorranno ancora una volta darmi una mano
Andrea

 ha scritto nel messaggio
news:ZWCtc.354167$rM4.14...@news4.tin.it...

Per cambiare la stampante di default se non funziona l'oggetto Printer in
acc'200x poi utilizzare script wsh:
es.
Dim PrinterPath As String, PrinterPathOld As String, WshNetwork As Object
Set WshNetwork = CreateObject("WScript.Network")
'PrinterPathOld = "Canon BJC-8200 (BJRSTR)"
PrinterPath = "Fax"
WshNetwork.SetDefaultPrinter PrinterPath
Set WshNetwork = Nothing
L'unico problema è che non hai modo di leggere prima quale sia la stampante
di default per ripristinarla.
Poi puoi impostare le proprietà del documento con l'Oggetto PageSetup:
es.
Nell'esempio seguente vengono impostati tutti i margini del documento
"Vendite.doc."
With Documents("Vendite.doc").PageSetup
    .LeftMargin = InchesToPoints(0.75)
    .RightMargin = InchesToPoints(0.75)
    .TopMargin = InchesToPoints(1.5)
    .BottomMargin = InchesToPoints(1)
End With
Non credo il codice si possa ottimizzare di più, anche perché non fai molto;
sono tre/quattro istruzioni ed ognuna ha un compito ben preciso...
Ciao.
-- 
Sergio MAZZA

 ha scritto nel messaggio
news:Klhuc.261142$hc5.11...@news3.tin.it...

Grazie mille per la risposta chiara ed esauriente.
L'unico problema però resta il fatto che dovrà essere l'utente a poter
scegliere la stampante con cui stampare volta per volta quindi potrebbe
essere utile tenere word in background per tutte le fasi tranne che per la
stampa del documento, cioè il momento in cui si decide di stampare in word
(che prima della stampa presenta il menu con le stampanti e le altre
proprietà impostabili manualmente dall'utente.
Come potrei fare per far si che quella finestra comparisse all'utente?
Grazie ancora per il tempo dedicatomi.
Andrea