Variable d'objet non définie (erreur 91) lors de l'utilisation d'AHK pour fermer une application Access


Aaron_Geng

J'ai un formulaire d'accès nommé "Form1", et sous la forme il a quelques sous-marins comme, Form_Load, Form_Unload, etc.

Je souhaite utiliser un script AutoHotKey pour contrôler l'ouverture et la fermeture du formulaire.

Code d'ouverture du formulaire:

acc:= ComObjCreate("Access.Application")
acc.OpenCurrentDatabase("\\...\target_database.accdb")
acc.Visible := True
acc.UserControl := True
acc.DoCmd.OpenForm("Form1")

Code de fermeture du formulaire:

acc.quit

Erreur 91

apparaît lorsqu'il tente de fermer l'application. Et l'erreur semble se rapporter au sous Form_Unload. Cela ne se produit que lorsque j'utilise AutoHotKey, je peux fermer l'accès manuellement sans problème.

Voici le code pour Form_Unload:

Private Sub Form_Unload(Cancel As Integer)
' update the data in txt, signal and datetime
Dim fso As New FileSystemObject
'the file we're going to write to
Dim ts As TextStream
'open this file to write to it
Set ts = fso.CreateTextFile("\\cp-apps01\ExtruderDataCollector\TESTING\log.txt", True)
For Each Key In Module1.dict_pre_Signal.Keys
    ts.WriteLine (Key & " " & Module1.dict_pre_Signal.Item(Key) & " " _
        & DateValue(CStr(Module1.dict_pre_Time.Item(Key))) & " " _
        & TimeValue(CStr(Module1.dict_pre_Time.Item(Key))))
Next Key
ts.Close
Set fso = Nothing
End Sub

Existe-t-il un moyen de fermer le formulaire ou de le modifier en mode Création avant de fermer l'application d'accès?

Gustav

Et si vous fermiez le formulaire?

acc.DoCmd.OpenForm("Form1")
acc.DoCmd.Close(acForm, "Form1", acSaveNo)
acc.Quit

ou avec les valeurs numériques des constantes:

acc.DoCmd.OpenForm("Form1")
acc.DoCmd.Close(2, "Form1", 2)
acc.Quit

Articles connexes