VBA-Code zum Schließen einer Access-Datenbank, ohne eine Shell der Anwendung geöffnet zu lassen

8

Ich verwende derzeit Application.Quit , wodurch eine Shell der MS Access-Anwendung geöffnet bleibt.

Nach der Verarbeitung der aufrufenden Funktion gegen die Zielanwendung bleibt jede Instanz der Anwendung noch offen; obwohl die spezifische Datenbankinstanz geschlossen ist.

Wie kann ich das Anwendungsfenster der Shell 'Shell' mithilfe von VBA programmatisch schließen?

Hier ist ein Beispiel, wie die Variable erstellt wird und wie ich sie schließe:

%Vor%     
Curtis Inderwiesche 17.09.2012, 21:03
quelle

7 Antworten

4

Sie müssen Application.Quit für die Instanzvariable ausführen.

Zum Beispiel

%Vor%     
Curtis Inderwiesche 10.01.2014, 16:53
quelle
8

Gemäß der Dokumentation: Application.Quit macht dasselbe wie DoCmd.Quit . Nämlich

  

Die Quit-Methode beendet Microsoft Access. Sie können eine von mehreren auswählen   Optionen zum Speichern eines Datenbankobjekts vor dem Beenden.

Sie können versuchen, einen von ihnen mit dem Parameter acQuitSaveNone oder 2 aufzurufen, der "Microsoft Access beendet, ohne irgendwelche Objekte zu speichern". Bei weiterer Überprüfung verwenden Sie Application.Quit als DoCmd.Quit hinzugefügt für die Abwärtskompatibilität für Zugriff 95 (Siehe Anmerkungen für Quit-Methode, wie sie für das DoCmd-Objekt gilt.) Wenn Sie eine dieser Methoden ausführen, sollten Sie beim Schließen dennoch eine automatische Komprimierung durchführen, wenn Sie über die Berechtigungen verfügen, die die Ursache für Ihre Shells sein können. p>

Wenn das für Sie nicht funktioniert, ist hier ein etwas extremer Vorschlag. Speichern Sie diese Datei als VBScript-Datei und rufen Sie sie auf, sobald Sie wirklich mit Access fertig sind. Dies beendet alle MSAccess-Prozesse auf Ihrem Windows-PC, ohne Komprimierung und Reparatur.

%Vor%

Um das Skript aufzurufen, das [vbspath] durch den tatsächlichen Pfad ersetzt. Wenn der Pfad Leerzeichen enthält, verwenden Sie doppelte Anführungszeichen und setzen Sie ihn in Anführungszeichen:

%Vor%     
Daniel Cook 17.09.2012 22:22
quelle
5

Ich verwende immer DoCmd.Quit acQuitSaveAll .
Dies funktioniert zumindest in Access 2000, 2003 und 2010 (dort habe ich gesehen es funktioniert).

    
Christian Specht 17.09.2012 21:51
quelle
3

Access.Quit funktioniert für mich. Vielleicht versuchen Sie das anstelle von Application.Quit ?

Wenn das das Problem nicht löst, könnte Ihr Problem anderswo sein. In diesem Fall erzählen Sie uns bitte mehr über dieses Projekt.

    
PowerUser 17.09.2012 21:07
quelle
1

DoCmd.Quit acQuitSaveAll, funktioniert zuletzt. Ich habe vorher alle anderen Optionen ausprobiert und eine Muschel hing noch immer zurück.

    
JAcob 25.09.2014 21:23
quelle
1

Wechseln Sie das Formular in die Entwurfsansicht. Setzen Sie die BorderStyle -Eigenschaft des Formulars auf None . Klicken Sie im Menü Anzeigen auf Formularansicht . Beachten Sie, dass die Titelleiste des Formulars vollständig entfernt wird.

    
Adam Arian 03.06.2015 11:55
quelle
0

Meinst du, dass es ein cmd.exe-Shell-Fenster offen lässt, nachdem es offensichtlich beendet wurde und ein MSACCESS.EXE-Prozess im Hintergrund in der TaskList ausgeführt wird? Und die Shell wird im Hintergrund aufgerufen?

    
dmc2005 25.06.2013 01:55
quelle