VBA Code zum Schließen einer Access-Datenbank Ohne eine Shell von der Anwendung geöffnet
Ich bin derzeit mit Application.Quit
bleibt eine shell mit der MS-Access-Anwendung öffnen.
Nach der Verarbeitung der aufrufenden Funktion gegen die Zielanwendung, ich bin Links mit jeder Instanz der Anwendung geöffnet bleibt immer noch; obwohl die spezifischen Datenbank-Instanz geschlossen ist.
Wie kann ich die Datenbank 'shell' - Anwendung Fenster schließen programmgesteuert mithilfe von VBA?
Hier ist ein Beispiel, wie die variable erstellt wird und wie ich am Schluss es:
Dim appAccess As New Access.Application
' Do stuff here...
appAccess.CloseCurrentDatabase
- Wie sind Sie mit der Berufung auf diese 50 Muscheln? Hast du Sie öffnen jedes dieser manuell, oder wurden Sie eröffnet durch code?
- Eröffnet von code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie zum ausführen der Anwendung.Beenden Sie für die Instanz-variable.
Beispielsweise
Gemäß der Dokumentation: - Anwendung.Beenden macht das gleiche wie DoCmd.Beenden. Nämlich
Können Sie versuchen den Aufruf mit dem parameter
acQuitSaveNone
oder 2, die "Microsoft Access Beendet, ohne zu speichern alle Objekte". Nach einer erneuten überprüfung verwendenApplication.Quit
alsDoCmd.Quit
war Hinzugefügt, um die Abwärtskompatibilität für Access 95 (Siehe Bemerkungen für die Quit-Methode, bezieht sich auf die DoCmd-Objekts.) Tun, entweder von diesen, sollte noch eine automatische komprimieren auf schließen, wenn Sie die Berechtigungen haben, die verursachen können Sie Muscheln.Wenn das nicht funktioniert, für Sie, hier ist ein etwas extremer Vorschlag. Speichern Sie diese als eine vbscript-Datei und rufen Sie es einmal, Sie sind wirklich fertig mit Access. Dieser beendet alle MSAccess Prozesse auf Ihrem windows-pc ohne zu komprimieren und reparieren.
Rufen Sie das Skript einbauen [vbspath] durch den tatsächlichen Pfad. Wenn der Pfad Leerzeichen enthält, stellen Sie sicher, dass doppelte Anführungszeichen verwenden, und setzen Sie es in Anführungszeichen:
Ich benutze immer
DoCmd.Quit acQuitSaveAll
.Dies funktioniert zumindest in Access 2000, 2003 und 2010 (das ist, wo ich gesehen es funktioniert).
Access.Quit
für mich funktioniert. Vielleicht versuchen Sie, die stattApplication.Quit
?Wenn das nicht zu lösen, kann das problem woanders sein, in dem Fall bitte erzählen Sie uns mehr über dieses Projekt.
DoCmd.Beenden Sie acQuitSaveAll, Arbeitete lange dauern. Ich habe versucht, alle anderen Optionen vor und eine shell hängen noch zurück.
Wechseln Sie das Formular in Entwurfsansicht.
Set form
BorderStyle
EigenschaftNone
.Auf der Ansicht - Menü, klicken Sie auf Formularansicht. Beachten Sie, dass die form der Titelleiste wird vollständig entfernt.
Meinst du es verlässt cmd.exe shell-Fenster öffnen nach dem scheinbar schlichten, und einen MSACCESS.EXE Prozess läuft im hintergrund in der TaskList? Und die shell aufgerufen wird, ist im hintergrund?