Newsgroup: it.comp.appl.access
Titolo: Intercettare chiusura Word dopo averlo aperto da codice

In una tabella ho due campi di tipo testo che contengono
rispettivamente il path ed il nome di un documento Word.
Nella form associata a tale tabella, sull'evento "doppio click" di
entrambi i controlli associati ai campi in questione, ho inserito il
seguente codice:
Private Sub txtPath_Verbale_DblClick(Cancel As Integer)
Dim appWrd As Word.Application, wrdDoc As Word.Document
If Nz(Me.txtPath_Verbale, "") > "" And Nz(Me.txtVerbale, "") > "" Then
    Set appWrd = New Word.Application
    appWrd.Visible = True
    Set wrdDoc = appWrd.Documents.Open(Me.txtPath_Verbale &
Me.txtVerbale, True)
End If
End Sub
e tutto funziona a meraviglia: se i campi contengono un valore, Word
si apre sul documento corrispondente.
Il problema sorge nel "sincronizzare" Word e la maschera Access: per
esempio voglio impedire che la maschera possa essere chiusa (tramite
un apposito pulsante) quando Word è attivo dopo aver fatto doppio
click sul controllo; inoltre ho bisogno di recuperare, prima che Word
venga chiuso, il nome ed il percorso del documento, che potrebbe
essere stato cambiato dall'utente (con "Salva con nome").
In altre parole ho bisogno di intercettare gli eventi (o almeno
l'evento quit) dell'oggetto wrddoc; oppure, in alternativa, mi
andrebbe bene anche di bloccare la chiusura di Word e pilotarlo da
Access (wrddoc.quit) .
Come posso fare ?
Ho sbagliato l'approccio al problema ?
Ho guardato l'help ma non ho ricavato un gran che: ho trovato la
dichiarazione di variabili con la parola chiave WithEvents che
sembrava fare al caso mio, ma dopo qualche tentativo sono riuscito
soltanto a non fare funzionare più il collegamento con Word.
Grazie a chiunque risponderà
Vincenzo Turturro
----------------------------------
Niuna impresa, per minima che sia, 
può avere cominciamento e fine
senza queste tre cose:
e cioè senza sapere,
senza potere,
senza con amore volere
(Anonimo fiorentino, XIV sec.)
------------------------------

 wrote in
message 397d4b74...@firewall.regione.toscana.it...


Ho provato, ma non funziona perchč l'istruzione 
hCurrWnd = GetWindow(Application.hWndAccessApp, GW_HWNDFIRST)
restituisce hCurrWnd = 0 e quindi il loop seguente non viene eseguito.
Cosa ho sbagliato ?
Grazie per le risposte: quella precedente e quella che mi invierai
:-))
Vincenzo Turturro
----------------------------------
Niuna impresa, per minima che sia, 
puņ avere cominciamento e fine
senza queste tre cose:
e cioč senza sapere,


 e cioè senza sapere,


 ------------------------------
Prova con GetObject() che va in errore se l'oggetto indicato non è
istanziato; questo è uno stralcio preso dall'help di access:
----------------------------
Dim MyXL As Object  ' Variabile in cui viene memorizzato
       ' il riferimento a Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Flag per il rilascio finale.
' Prova per verificare se vi è già una copia di
' Microsoft Excel in esecuzione.
On Error Resume Next  ' Rimanda l'intercettazione degli errori.
' La funzione Getobject chiamata senza il primo
' argomento restituisce un riferimento a un'istanza
' dell'applicazione. Se l'applicazione non è in
' esecuzione viene generato un errore. Si noti la
' virgola utilizzata come segnaposto per il primo
' argomento.
Set MyXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear  ' Cancella l'oggetto Err in presenza di errori.
------------------------
Ciao.