Newsgroup: it.comp.appl.access
Titolo: Stampa doc Word da Access

Salve a tutti,
sto cercando di stampare da Access 2003 un documento Word, però mi 
viene restituito l'errore 4605 dopo che nel codice gli passo il 
percorso del file. Il riferimento alla libreria Word (11.0) è stato 
incluso.
Allego codice (originario di Segio Mazza):
      On Error GoTo ApriWordperStampare_err
      Dim oApp As Word.Application
      Set oApp = CreateObject("Word.Application")
      oApp.PrintOut FileName:="C:\Informative\Informativa A.doc"
'Dopo questa istruzione salta al messaggio di errore.
      oApp.Quit False
      Set oApp = Nothing
      Exit Sub
ApriWordperStampare_err:
          Set oApp = Nothing
          MsgBox Err.Number & Application.AccessError(Err.Number)
Grazie.

 Grazie.
Prego
-- 
Ciao
Access

 Grazie.
Forse non serve fare tutto questo lavoro...!
Puoi sfruttare, in questo caso, il fatto che il file č associato all'opzione
stampa diretta e passare direttamente per questa:
Const SW_SHOWMINNOACTIVE = 7
ShellExecute Me.hWnd, "print", "C:\Documents\NomeFile.doc",
vbNullString,"C:\Documents", W_SHOWMINNOACTIVE
oppure ShellExecuteEx.... ma questo č piů semplice se non devi attendere la
fine.
Se invece devi rendere il processo di stampa SINCRONO allora devi perforza
usare ShellExecuteEx ma le cose cambiano un pň..
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 ha scritto nel messaggio 
news:mn.eae97d77e...@gmail.com...

Da una prima prova sembra essere lo spazio nel nome del file.
Come ti ha indicato Alessandro, se devi solo stampare il file (di qualsiasi 
tipo) ti conviene "scendere di livello" e utilizzare le funzionalità di 
windows...
Ciao.
-- 
Sergio MAZZA 

 Access
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggionews:mn.eae97d77e...@gmail.com...

Ultimamente sono un produttore di ruggine... ma qualche cosa la
indovino ancora....
;-)
@Alex

 Sergio MAZZA
-- 
Ciao
Access 

 Access
Il codice che utilizzi?
Ciao.
-- 
Sergio MAZZA

 Il codice che utilizzi?
Il codice è lo stesso indicato nel primo post.
Private Sub cmdfind_Click()
   On Error GoTo ApriWordperStampare_err
      Dim oApp As Word.Application
      Set oApp = CreateObject("Word.Application")
      oApp.PrintOut FileName:="C:\InformativaA.docx" 'qui errore 4605
      oApp.Quit False
      Set oApp = Nothing
      Exit Sub
ApriWordperStampare_err:
          Set oApp = Nothing
          MsgBox Err.Number & Application.AccessError(Err.Number)
End Sub
-- 
Ciao
Access 

 ha scritto nel messaggio news:1185782548.5...@g4g2000hsf.googlegroups.com...
Ultimamente sono un produttore di ruggine... ma qualche cosa la
indovino ancora....
;-)
@Alex
[risposta]
La "ruggine" sta per "qualcosa di già fatto"? A me capita spesso...
Ciao.
-- 
Sergio MAZZA 

 Access
Ciao.
-- 
Sergio MAZZA 

 Si ma questo  funge sotto word , quando word č aperto
Mi correggo e chiedo scusa a tutti; mi ero fissato e non vedevo l'errore 
(nel mio messaggio), che invece nel codice del mio modulo non c'era.
L'esatta sequenza di operazioni č:
Set oApp = CreateObject("Word.Application")
oApp.Documents.Add '<-- apertura documento dummy
oApp.PrintOut FileName:="nomeFile.doc"
...
Mancava l'apertura di un qualsiasi documento (anche bianco) per attivare la 
stampa...


 oApp.Documents.Add '<-- apertura documento dummy
Quindi devo aggiungere solo questa linea di codice?
Inoltre, domanda: sono costretto a chiudere Word ogni volta per avviare 
il processo di stampa?
Grazie.

 usare ShellExecuteEx ma le cose cambiano un pò..
Non ho questa necessità, mando il file in stampa e continuo con il mio 
lavoro.
Grazie

 Da una prima prova sembra essere lo spazio nel nome del file.
Ok, proverò anche questa...

 Grazie.
Ciao.
-- 
Sergio MAZZA 

 Ok, proverò anche questa...
Lascia stare; prima prova con la riga di istruzione da inserire...
Ciao.
-- 
Sergio MAZZA 

 No, ma; spiegati meglio...
Ok. Allora, i file che devo stampare sono delle informative. Bene ad 
operazioni diverse ho associato informative diverse. In una stessa 
seduta potrei avere la necessità di stampare informative diverse.
Non vorrei che ogni volta devo chiudere Word per farlo riaprire da 
Access, è sufficiente che si apra la prima volta in "automatico" e poi 
lo lascio li in attesa delle altre, eventuali, stampe?
Grazie.

 Grazie.
E' un poco pericoloso; perché:
- devi dichiarare, in un modulo, una variabile oggetto di tipo public;
- associare alla variabile oggetto il tipo utilizzando (es.) la macro 
AutoExec (che esegue una function);
- utilizzare quella variabile;
- gestire ogni evento di uscita dall'applicazione per scaricare dalla 
memoria la variabile oggetto public;
- e in tutto questo c'è da intercettare anche eventuali errori di codice per 
(se necessario) distruggere la variabile oggetto.
Non facendo gli ultimi due passi ti ritroveresti più sessioni di word aperte 
e la memoria ram che collassa.
Se prevedi di farlo un una sola form, la cosa è un poco più semplice perché:
- devi dichiarare, in un modulo, una variabile oggetto di tipo public;
- nell'evento "su apertura" associ alla variabile oggetto il tipo 
utilizzando (Set ...)
- nell'evento "su chiusura" della form chiudi l'oggetto e lo distruggi (Set 
... = nothing)
- nella routine che stampa inserisci la gestione dell'errore:
...
on error goto errori
...codice che stampa...
exit sub
errori:
    set ... = nothing '<-- distrugge la variabile oggetto
    msgbox err.number & " " & err.description
end sub
Ciao.
-- 
Sergio MAZZA 

 Se prevedi di farlo un una sola form, la cosa è un poco più semplice perché:
No, non posso.
Potrei avere la necessità di stampare anche da un'altra form.

 Potrei avere la necessità di stampare anche da un'altra form.
Allora carica una form nascosta che esegue i passi:
- nell'evento "su apertura" associ alla variabile oggetto il tipo
utilizzando (Set ...)
- nell'evento "su chiusura" della form chiudi l'oggetto e lo distruggi (Set
... = nothing)
E nelle form:
