Newsgroup: it.comp.appl.access
Titolo: Apertura file di word con stampa unione

Prima di tutto mi presento: sono un newbye della peggior specie, però
conosco le regole del niubbo quindi sono alcuni giorni che leggo, ho
consultato il sito comune come fosse la bibbia ma ... continuo ad essere un
newbye di access e ogni cosa è difficile.
Il mio problema credo sia veramente banale, ma leggendo i vecchi messaggi su
google NON riesco a capire come fare questa semplice (!?!) cosa:
Il problema: ho fatto una stampa unione collegando i campi della mia tabella
al mio file di word.
La mia maschera ha il suo bravo pulsante che mi apre word (autocostruito con
la creazione guidata di access) ma come faccio a fargli aprire direttamente
il file che voglio io (quello con la stampa unione già bella costruita) ?

 ha scritto nel messaggio
news:2shq58F...@uni-berlin.de...

Riporto qui di seguito la risposta che Sergio MAZZA dette ad un quesito
simile al tuo il lontano 6 ottobre 2000 alle ore 16:23
========================
Questo è un esempio di codice per aprire un documento word e stampare il
contenuto:
'--------------------
Sub ApriWordperStampare()
Dim oApp As Word.Application
Set oApp = CreateObject("Word.Application")
'apro il documento
oApp.Application.Documents.Open "d:\documenti\NomedelDocumento.doc"
'se voglio vedere word
oApp.Visible = True
'la prossima riga stampa tutte le pagine
oApp.ActiveDocument.PrintOut
'chiudo word
oApp.Quit
Set oApp = Nothing
End Sub
'--------------------
Dovresti prima inserire i riferimenti alla libreria "Microsoft Word".
Se colleghi il documento ad una query che ti esegue già la selezione dei
dati e poi esegui il mailmerge non dovresti avere problemi. Il problema ti
si presenta se devi stampare un report tipo fattura; con word è un'ammazzata
e non so' se ne vale la pena.
Al contrario se hai solo "lettere"...
Ciao.
=======================================
In pratica, se tu hai già creato con Word un documento di stampa unione
collegata ad una tabella del tuo database, quello suggerito da Sergio MAZZA
è il codice VBA da eseguire per aprire il documento e per poi eseguire la
stampa unione.
Naturalmente al posto di "d:\documenti\NomedelDocumento.doc" indicherai il
path completo del tuo documento di stampa unione.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:juP8d.27323$H11.8...@twister1.libero.it...

Ho provato, mi funziona l'apertura del file ma solo se tolgo la parte di
stampa.
Invece se lascio il printout fa effettivamente la stampa ma non esercita la
stampa unione, in pratica mi stampa i codici dei campi e non il contenuto.
C'e' una cosa peggiore: l'apertura del file la fa con tutte le barre degli
strumenti di word attivate e (quel che è peggio) la barra degli strumenti
con i cursori per scorrere i record è disattivata.
Prima del tuo reply ho fatto altre prove con sistemi diversi sempre tratti
da google, e il problema è sempre lo stesso: come faccio a puntare il record
corrente ?
Nelle mie prove Word punta sempre (anche con il codice che hai citato tu)
all'ultimo record.
Riccardo

 Riccardo
Nel suggerimento indicato da Roberto, Sergio MAZZA scriveva: "...Se colleghi il documento ad una query che ti esegue già la
selezione dei dati e poi esegui il mailmerge non dovresti avere problemi."
Questo è il primo passaggio da effettuare; il secondo è eseguire la stampa unione da codice, quindi riassumendo la routine di
esempio diventa:
es.
Sub ApriWordperMailmerge()
Dim oApp As Word.Application
Set oApp = CreateObject("Word.Application")
oApp.Documents.Open "c:\nomeFile.doc"
With oApp.ActiveDocument.MailMerge
    .Destination = wdSendToNewDocument '<-- crea nuovi documenti
    .Execute '<-- esegue il mailmerge
End With
oApp.Visible = True
Set oApp = Nothing
End Sub
Ciao.
-- 
Sergio MAZZA

 ha scritto nel messaggio
news:ck0nqn$avt$1...@canarie.caspur.it...

Non ci riesco ... sono troppo indietro con Access.
Sono quasi 5 ore che ci provo spulciando e provando ovunque con google ma
non ci riesco.
In realtà mi mancano troppe "basi".
In verità io non capisco fino in fondo cosa significo "Se colleghi il
documento ad una query che ti esegue già la selezione dei dati e poi esegui
il mailmerge non dovresti avere problemi"
Nel senso che io la query l'ho fatta ma il collegamento del documento alla
query non riesco a farlo.
E quello che Sergio m'ha appena scritto non riesco a farlo funzionare.
Adesso studio ancora un po' :-)
Grazie comunque ragazzi, appena sarò in grado almeno di mettere in grado i
vostri consigli tornerò a far domande (e sarà presto, spero)
Riccardo

 Riccardo
Ipotizzando che la query la devi filtrare per un campo ID che viene (non necessariamente) visualizzato sulla form in una casella di
testo chiamata ID. Nella query, nella riga "criteri" della colonna ID inserisci: Forms!nomeForm!id; così ogni volta che viene
eseguita la query viene richiesto l'ID per filtrarla, in questo caso viene letto il valore della casella di testo "ID" sulla form
aperta "nomeForm".
In Word apri il documento e l'origine dati della stampa unione la associ a quella query; ogni volta che viene aperto il documento e
richiesta la stampa unione, viene eseguita la query che a sua volta richiederà il valore "ID" alla form "nomeForm".
Inserisci il codice che ti ho suggerito (riadattandolo) e provalo...
Ciao.
-- 
Sergio MAZZA

 Inserisci il codice che ti ho suggerito (riadattandolo) e provalo...
Dunque non mi sono perso d'animo...
Ho fatto tutto come spiegato anche perchè stavolta mi pareva di averlo
capito.
E infatti sembra funzionare, ma solo se vado manualmente. Mi spiego, se apro
il file word lui mi chiede l'ID, io glielo do' e effettivamente va in stampa
unione il record giusto.
Se apro la mia form, scorro i record e lancio word (manualmente) funziona,
si apre in unione il record giusto.
Se vado col pulsante della form e quindi col codice e inserisco quanto
riportato (sia nel primo msg che nel secondo) iniziano i guai.
Non funziona.
Nel codice del primo messaggio devo togliere questa parte
    oApp.ActiveDocument.PrintOut
    Set oApp = Nothing
altrimenti si incazza. Word parte ma il record non lo sente, prende sempre
il solito anche se nella form scorro i record e riprovo.
Nel codice del secondo messaggio si blocca sulla wdSendToNewDocument dove
dice che l'oggetto richiesto non è disponibile.
Premetto che su VB ho settato Microsoft word 11 object library.
Grazie per la pazienza
Riccardo


Facciamo prima se invii il codice che hai utilizzato; nel mentre controlla se non ci sono altre istanze di word rimaste aperte
(CTRL-ALT-CANC, Processi)...
Ciao.
-- 
Sergio MAZZA

 (CTRL-ALT-CANC, Processi)...
Questo è uno dei tentativi... si blocca sul wdSendToNewDocument
Private Sub Comando6_Click()
Dim oApp As Word.Application
Set oApp = CreateObject("Word.Application")
oApp.Documents.Open "c:\temp\do.doc"
With oApp.ActiveDocument.MailMerge
    .Destination = wdSendToNewDocument '<-- crea nuovi documenti
    .Execute '<-- esegue il mailmerge
End With
oApp.Visible = True
Set oApp = Nothing
End Sub
Ma in pratica questo wdSendToNewDocument  cos'e' e cosa fa ?
Nel debug mi dice che ha valore = 0
Riccardo


Hai inserito i riferimenti alla libreria di Word (Strumenti - Riferimenti)?
Cambialo in zero:
.Destination = 0 '<-- crea nuovi documenti
E' l'indicazione per word di cosa vuoi produrre con il mailmerge, se nuovi documenti (lettere), fax, e-mail o inviarli direttamente
alla stampante...
Ciao.
-- 
Sergio MAZZA

 alla stampante...
Si la libreria di word l'ho settata. Si chiama "Microsoft Word 11 object
library", giusto ?
Cambiato .destination=0
Ma fa sempre uguale ossia:
Errore di run time 5852
L'oggetto richiesto non è disponibile
... ho sempre una finestra dal 2° piano, mi butto ?

 ... ho sempre una finestra dal 2° piano, mi butto ?
AHa! Allora hai lasciato una finestra aperta!
L'errore riportato mi sembra strano, non è che hai tolto dalla query un campo e word non lo trova?
Ciao.
-- 
Sergio MAZZA

 L'errore riportato mi sembra strano, non è che hai tolto dalla query un
campo e word non lo trova?
Adesso faccio una cosa: cancello tutto.
Rifaccio tutto, database, tabella, query, mailmerge e se continua a non
andare sfanculizzo tutto e ... boh non lo so cosa faccio.
Intanto vado a mangiare una pizza, che non ho pranzato. :-)
Grazie mille Sergio !
P.S.: ma fosse che è un problema di office 2003 ?
Quasi quasi provo con il 2000 !


Non c'entra nulla la versione, io utilizzo la '97.
Fai bene, una pizza ci vuole; anzi sai che faccio? Me la mangio anch'io!
Non sfanculizzare nulla, domani ci si riprova...
Ciao.
-- 
Sergio MAZZA

 Non sfanculizzare nulla, domani ci si riprova...
Domani sono in giro per lavoro lontano da Access (e mi sa che è un bene)
Ma venerdi te ne sarei grato...
Adesso stavo rifacendo delle prove...
Ormai ho capito come impostare la query per selezionare il record corrente
(almeno questo) e usando l'autocomposizione pulsante di Access 2003 è venuto
fuori questo:
On Error GoTo Err_puls_Click
    Dim stAppName As String
    stAppName = "winword.exe c:\temp\doc.doc"
    Call Shell(stAppName, 1)
Exit_puls_Click:
    Exit Sub
Err_puls_Click:
    MsgBox Err.Description
    Resume Exit_puls_Click
Tu non ci crederai ... ha funzionato !
Però non sono soddisfatto perchè se non ho capito male l'altro sistema mi
avrebbe consentito di fare una copia del file, di stamparlo, di inviarlo,
etc ...
Ora con la shell non so se è ancora possibile accedere a tute quelle
opzioni.
Ma questa è un'altra avventura ... :-)
Ciao
Riccardo

 Riccardo
-- 
Sergio MAZZA