Newsgroup: it.comp.appl.access
Titolo: Stampa Unione Office 2003 su Windows 7 (la finestra di word rimane in secondo piano)

Salve a tutti,
 
ho scritto sul NG qualche settimana fa per chiedere aiuto per l'errore di runtime 91 per l'argomento in oggetto. Ho risolto il problema semplicemente riassegnando il riferimento, ma continua a rimanere il problema relativo al fatto che la finestra di Word rimane in secondo piano, per cui si deve attivare  con ALT + TAB  o da Gestione Attività. L'applicazione su PC con XP e Office 2003 o 2007 funziona correttamente.
 
Il codice è sempre lo stesso:
 
On Error GoTo stampafatture_err
 
    Dim Lettera As String, OrigineDati As String
    Lettera = PathCorrente & "FatturaRata.doc"
    OrigineDati = PathCorrente & "Fatturazione.rtf"
 
    Me.SMFatturazione.Form.Requery
 
    If Me.SMFatturazione.Form.RecordsetClone.RecordCount = 0 Then
        MsgBox "Non ci sono fatture da stampare per i criteri indicati"
        Exit Sub
    Else
 
         DoCmd.OutputTo acOutputQuery, "Fatturazione", acFormatRTF, OrigineDati, False
 
         'chiamiamo word e per ora non lo rendiamo visibile
         Dim oApp As Word.Application
 
         Set oApp = CreateObject("Word.Application")
 
         oApp.Visible = False
 
         'apro il modello della lettera
         oApp.Documents.Open Lettera
 
         'eseguo la stampa unione dell'intestazione con output su un nuovo documento
         With oApp.Documents(1).MailMerge
             .OpenDataSource OrigineDati
             .Destination = wdSendToNewDocument
             .Execute
         End With
 
         'attivo il documento creato
         oApp.Windows(1).Activate
 
         'posso visualizzare il risultato per un controllo
         oApp.Visible = True
 
         'chiudo il modello documento senza salvarlo
         oApp.Windows(1).Close SaveChanges:=wdDoNotSaveChanges
 
         'rilascio gli oggetti
         Set oApp = Nothing
    End If
 
 
stampafatture_exit:
    Exit Sub
 
stampafatture_err:
    oApp.Visible = True
    MsgBox Err.Number & ", " & Err.Description
 
 
A qualcuno è capitato lo stesso problema? Qualcuno ha idea di come si risolva?
 
Grazie a tutti
 
Nina


Salve Nina......
Avevo risposto già in parte al tuo quesito scorso, notando un piccolo
errore di compilazione;
Riguardo al fatto che word rimane in secondo piano.... stiamo parlando
di un pulsante oppure di un etichetta a cui hai assegnato la routine
postata sull'evento "clic"?
Apparentemente il codice va bene....  a parte: oApp.Visible = True
dopo: stampafatture_err:   non ha più senso visto che la variabile
"oApp" è stata azzerata in precedenza.
A me capita quando utilizzo delle etichette a cui assegno delle
routine sull'evento "clic" e a queste, alla proprietà "Sottoindirizzo
colleg. ipertest." assegno l'indirizzo di una macro "appoggio" per far
si che ogni volta che punto l'etichetta, il mouse cambia aspetto in
"manina" ma con l'effetto che se si tratta di dover aprire un altra
aplicazione (come nel tuo caso), questa resta in secondo piano.
Prova a specificare meglio la situazione (anche piccoli particolari,
tipo il mio esempio) e magari si riesce a trovare un rimedio.
Saluti
M7a1x



Ciao M7a1x,
ti ringrazio per la disponibilità. Sì, avevo letto anche la tua risposta al quesito precedente, ma il problema non stava in quella riga di codice (anche eliminandola non si risolve il problema e, se non sbaglio, quella riga serve a rendere visibile word qualora vi sia qualche errore e quindi quando viene saltata la riga in cui la variabile viene azzerata ma l'oggetto è stato creato).
 
Il codice in questione è associato ad un pulsante di comando senza alcun riferimento a collegamenti ipertestuali. Quello che non capisco è perché il problema si presenti con windows 7 mentre in precedenza, quando il cliente aveva come S.O. Windows XP, nessun problema.
 
Il codice associato al pulsante di comando è tutto quello postato: esporto in un file .rtf l'origine dati del documento di stampa unione e poi apro il documento, eseguo la stampa unione, chiudo il documento di stampa unione e visualizzo il documento prodotto secondo l'opzione "unisci in nuovo documento". Il punto è che il documento prodotto rimane in secondo piano, nonostante la riga con l'istruzione .Activate e poi quella successiva .visible = true.
 
Qualche altra idea?
 
Grazie mille
 
Nina
 
 
 

         oApp.Visible = True
 
oApp.Activate
 
al momento non mi viene in mente altro.
 
Saluti
M7a1x
 

 ...
 
Puoi usare delle funzioni API per portare una finestra in primo
piano. Qui c'� un esempio tedesco (il codice � inglese ;-)
per notepad. Il principio � lo stesso per Word:
http://www.activevb.de/tipps/vb6tipps/tipp0214.html
 
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 

 Access FAQ:  
http://www.donkarl.com/it
 
 
Ciao Karl,
 
ho provato a copiare in una maschera vuota il codice di esempio. Notepad viene avviato, ma anche facendo clic sul pulsante cui è associato il codice nell'esempio, NotePad rimane in secondo piano. ARGH!
Grazie mille per la disponibilità
 
Ciao
 
Nina


Ho trovato la soluzione usando il codice inidcato nel seguente link:
support.microsoft.com/kb/625485/it
 
 
 
Grazie a tutti per la disponibilità
 
Buon Natale e buone feste a tutti
Nina

 ...
 
Nel codice hai sostituito il testo "Unbenannt - Editor"
con quello che si trova nel titolo della finestra di
Notepad nella tua versione italiana?



Ciao Karl,
 
avevo scritto solo "Blocco note", scrivendo "Senza nome - Blocco note" funziona.
 
Chiedo scusa per essermi arresa subito. :)
 
Grazie mille
 
Nina


Ciao Karl, 
 
ho aggiornato le mie procedure e il codice funziona bene quando la stampa unione non richiede l'interazione dell'utente. In alcuni casi appare invece la finestra di input con richiesta di un testo che viene poi utilizzato nel documento. In questi casi la finestra non va in primo piano. Ho provato a modificare il codice utilizzando la  stringa "Microsoft Word" che appare nella finestra di input, anziché "Lettere tipo1 - Microsoft Word", ma niente da fare, non funziona.
Qualche altro suggerimento a riguardo?? Ci sono quasi.
 
Grazie mille!
 
Nina

 Qualche altro suggerimento a riguardo?? Ci sono quasi.
 
Invece di tutti questi strapazzi... forse ti basta minimizzare
Access? Vuol dire, prima di aprire Word:
 
RunCommand acCmdAppMinimize


 Access FAQ:  
http://www.donkarl.com/it
 
 
Ciao Karl,
è un compromesso accettabile, ma pur sempre un compromesso. La creazione del documento di stampa unione è solo una delle procedure da attivare dalla finestra di Access. Verificata la correttezza dei dati inseriti nel documento di Stampa unione e salvato o stampato quest'ultimo, l'utente clicca, sulla form di access, un altro pulsante per l'aggiornamento del protocollo. Con questa soluzione l'utente dovrà quindi massimizzare manualmente la finestra di Access, ma io ritengo che non sia un problema (ma i clienti sai com'è, sono abituati a fare il minimo sforzo).
 
Grazie ancora! :)
 
Buone feste a te e tutto il NG!
 
Nina