Newsgroup: it.comp.appl.access
Titolo: Stampare da access con word

Salve ragazzi/e volevo semplicemente sapere come si può, cliccando un
bottone in una maschera access 2000 aprire word 2000, stampare un file
e poi chiuderlo, tutto in background senza vedere la finestra di word.
Qualcuno conosce la soluzione?
Grazie in anticipo, EndelWar

 ha scritto nel messaggio
news:am2prsofoe3nnttf9...@4ax.com...

Prova con:
'----------------------
Function ApriWordperStampare(nomeFile As String)
Dim oApp As Word.Application
Set oApp = New Word.Application
oApp.Application.Documents.Open nomeFile
oApp.ActiveDocument.PrintOut
oApp.Quit
Set oApp = Nothing
ApriWordperStampare = True
End Function
'----------------------
Ciao.

'----------------------
Ho riscritto, secindo tuo consiglio, le sub in questo modo:
Private Sub StampaPrivacy_Click()
 StampaPrivacy("c:\documenti\privacy.doc ")
End Sub
Sub StampaPrivacy(nomeFile As String)
Dim oApp As Object
Set oApp = CreateObject("Word.Application")
'Dim oApp As Word.Application
'Set oApp = New Word.Application
oApp.Application.Documents.Open nomeFile
oApp.ActiveDocument.PrintOut
oApp.Quit
Set oApp = Nothing
ApriWordperStampare = True
End Sub
ma in risposta ricevo "Errore di compilazione: Utilizzo non valido di
Property".
Come risolvo questo problema?
See Ya, EndelWar

 See Ya, EndelWar
Prova ad inserire i riferimenti alla libreria "Microsoft Word 8.0 object
library" (strumenti - riferimenti) e modifica la sub cosě:
...
Dim oApp As Word.Application
Set oApp = CreateObject("Word.Application")
...
Ciao.

 See Ya, EndelWar
Scusa ho riletto il messaggio e ho notato l'errore; nella sub dell'evento
click del bottone prova a togliere le parentesi:
'--------------
Private Sub StampaPrivacy_Click()
StampaPrivacy "c:\documenti\privacy.doc "
End Sub
'--------------
Fermo restando le modifiche da attuare illustrate nel mio messaggio
precedente...
Ciao.

precedente...
Dopo aver applicato i tuoi consigli e modificando l'evento click cosě:
 Private Sub StampaPrivacy_Click()
 
 Dim nomefile As String
 'Dim oApp As Object
 'Set oApp = CreateObject("Word.Application")
 Dim oApp As Word.Application
 Set oApp = New Word.Application
 'Dim oApp As Word.Application
 'Set oApp = CreateObject("Word.Application")
 'Ho provato in tutte e tre le maniere , ma niente da fare
 nomefile = "c:\documenti\privacy.doc"
 oApp.Application.Documents.Open nomefile
 oApp.ActiveDocument.PrintOut
 oApp.Quit
 Set oApp = Nothing
 End Sub
l'errore ora č segnalato all'istruzione (qualsiasi delle tre)
 Set oApp = etc. 
"Errore run-time -
2147471846
 (8001010a): errore di automazione"

 "Errore run-time -
2147471846
 (8001010a): errore di automazione"
Ho copiato ed incollato il tuo codice; ho provato tutte le combinazioni e
non mi ha presentato nessun errore di automazione.
Una domanda stupida: Ma tu word ce l'hai installato?
Ciao.

 ha scritto nel messaggio

ROTFL!!!
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

Una domanda stupida: Ma tu word ce l'hai installato?
E' proprio una domanda stupida...
Cercherņ di risolvere il problema in un altro modo, magari con le API.

 Cercherò di risolvere il problema in un altro modo, magari con le API.
Lascia stare le API, la routine di sergio e' quello che ti serve, bisogna
capire perche' non funziona.
Intanto modifica la riga di stampa in questo modo:
 oApp.ActiveDocument.PrintOut Background:=False
non centra con il tuo problema, ma ti servira'.
Vediamo di capire cosa non va nel tuo pc.
Apri word, poi da access esegui questa routine, facci sapere.
Private Sub cmdWord_Click()
    Dim wordApp As Object
    Dim wordDoc As Object
    On Error Resume Next
    Set wordApp = GetObject(, "Word.Application")
    If Err.Number = 429 Then
        Set wordApp = CreateObject("Word.Application")
        Err.Number = 0
    End If
    On Error GoTo gestErrori
    Set wordDoc = wordApp.Documents.Add()
    With wordApp
        .Visible = True
        .WindowState = 1 'wdWindowStateMaximize
        .Activate
        .Selection.Style = wordDoc.Styles("Titolo 1")
        .Selection.TypeText "FUNZIONA!"
        .Selection.ParagraphFormat.Alignment = 1
    End With
esci:
    Set wordDoc = Nothing
    Set wordApp = Nothing
    Exit Sub
gestErrori:
    MsgBox Err.Number & " - " & Err.Description
    GoTo esci
End Sub


 Cercherò di risolvere il problema in un altro modo, magari con le API.
Che te la sei presa? Spero di no; la mia domanda era lecita, visto che avevo
provato tutte le soluzioni da te riportate nel messaggio e non avevo
riscontrato nessun errore.
Nel mio primo messaggio ti suggerivo l'inserimento dei riferimenti alla
libreria di Word e non ho chiesto conferma dando per scontato che tu l'abbia
fatto.
Quindi, se tu hai inserito i riferimenti e hai scritto le tre righe di
codice non capisco perché ti presenta quell'errore...
Ciao e buon lavoro.

Apri word, poi da access esegui questa routine, facci sapere.
[snip]
Ci sono due casi:
1) Word 2000 č aperto e tutto funziona senza problemi (si crea un
nuovo documento con la scritta FUNZIONA allineata al centro) (anche la
routine di Sergio funzia e  word stampa)
2) Word 2000 non č aperto, appare "91 - Variabile oggetto o variabile
del blocco with non impostata"
Ora tutto sembra funzionare (almeno in parte), ma non č possiblile che
access apra da solo word, stampi senza dire niente e poi lo richiuda?
P.S. Sergio non me la sono presa, ma da te una domanda cosě non me la
aspettavo.

 ha scritto nel messaggio
news:8dgurs80q0ja32gvo...@4ax.com...

E perché no? Che male c'č a cercare di avere piů informazioni possibili per
risolvere un (tuo in questo caso) problema?
Vabbé chiudo con le mie scuse se ti sei offeso o in qualche modo ti ho
offeso; resta il fatto che non ne avevo nessuna intenzione.
Ciao.

 aspettavo.
Ti sbagli la domanda, era piu' che lecita, viste le richieste che girano su
questo ng ;-)
In ogni caso, conoscendo (virtualmente) sergio, non credo che abbia voluto
offenderti.


Prova a sostituire Word.Application con Word.Application.9 nella routine
Purtroppo non cambia nulla :(((


ho provato in questa maniera:
--------------------------------------
Dim wordApp As Object
Dim wordDoc As Object
Set wordApp = GetObject(, "Word.Application.9")
On Error Resume Next
If Err.Number = 429 Then
    Set wordApp = CreateObject("Word.Application.9")
    Err.Number = 0
End If
On Error GoTo gestErrori
wordApp.Documents.Open Filename:="C:\documenti\privacy.doc",
ReadOnly:=True
'If Documents.Count >= 1 Then
'    MsgBox ActiveDocument.Name
'Else
'    MsgBox "No documents are open"
'End If
 
    With wordApp
        .Visible = True
        .WindowState = wdWindowStateMinimize
        .Activate
        .PrintOut Background:=False
        .Quit
    End With
esci:
    Set wordDoc = Nothing
    Set wordApp = Nothing
    Exit Sub
gestErrori:
    MsgBox Err.Number & " - " & Err.Description
    GoTo esci
End Sub
---------------------------------------------------
tutto OK la prima volta che ho cliccato il bottone :), ma riavviando
il computer si genera un altro errore al primo Set :
"Errore runtime 429: il componente ActiveX non è in grado di creare
l'oggetto" :((((((


 On Error Resume Next
va prima di
 Set wordApp = GetObject(, "Word.Application.9")
-- 


 Set wordApp = GetObject(, "Word.Application.9")
Dopo la modifica funziona a meraviglia!!!
Grazie a tutti per l'aiuto e soprattutto per la pazienza!


Bene, cominciavo a disperare.
Ora modifica la routine di sergio, ricordati di aggiungere:
oApp.ActiveDocument.PrintOut Background:=False
                             ^^^^^^^^^^^^^^^^^
Una curiosita', visto che non ho ancora capito quale era il problema, ma sul
tuo pc oltre a W2000 ci sono installate altre versioni di word?


tuo pc oltre a W2000 ci sono installate altre versioni di word?
Il PC č nuovo, disco appena formattato, e ho installato solo office
2000 premium (word,excel,access,outlook e publisher), netscape e free
agent.

 agent.
Allora e' un po' strano che si debba usare la notazione word.application.9!
