Access
 sql >> Datenbank >  >> RDS >> Access

WIE MAN:Geplante Tasks mit Microsoft Access ausführen

Wollten Sie schon immer einen Zugangscode nach einem automatischen Zeitplan ausführen?

Ich zeige Ihnen, wie Sie eine vorhandene Access-Anwendung verwenden, um sie ordnungsgemäß auszuführen und zu beenden, wenn sie über den Taskplaner gestartet wird, während sie dennoch eine benutzerfreundliche Benutzeroberfläche bietet, wenn sie von einem Endbenutzer gestartet wird.

Der Schlüssel, damit es funktioniert, ist /cmd Flagge.

Befehlszeilen-Argumente an Access übergeben

Um ein Befehlszeilenargument für den Zugriff zu übergeben, verwenden Sie /cmd Befehlszeilenargument beim Starten Ihrer Anwendung:

Gibt an, dass auf der Befehlszeile der Wert folgt, der vom Befehl zurückgegeben wird Funktion. Diese Option muss der letzte Schalter in der Befehlszeile sein. Alternativ zu /cmd können Sie auch ein Semikolon (;) verwenden .

Verwenden Sie diesen Schalter, um ein Befehlszeilenargument anzugeben, das in VBA-Code (Visual Basic for Applications) verwendet werden kann

Um den Text abzurufen, übergeben Sie die Befehlszeile nach dem /cmd Argument verwenden Sie den VBA.Command Funktion.

Sie können diese Funktion beim Start verwenden, um Ihren Code so umzuleiten, dass er die wiederkehrende Aufgabe ausführt.

Praxisbeispiel

  1. Erstellen Sie eine neue Datenbank
  2. Fügen Sie den folgenden Code zu einem neuen Standardmodul hinzu:
Public Function Startup()
    
    If Trim(VBA.Command) = "Nightly" Then
        Shell "winver", vbNormalFocus
        Application.Quit
    End If
    MsgBox "Start up"
   
End Function
  1. Erstellen Sie ein neues Makro
  2. Wählen Sie „RunCode " aus der Dropdown-Liste "Neue Aktion hinzufügen"
  3. Setzen Sie "Funktionsname" auf Startup()
  4. Schließen und speichern Sie das Makro als „AutoExec "

Als normaler Benutzer ausführen

Um die Anwendung als normaler Benutzer zu testen, komprimieren und reparieren Sie einfach die Datenbank.

Sie sehen ein Meldungsfeld mit der Aufschrift „Starten.“

Als geplante Aufgabe ausführen

Um die Ausführung als geplante Aufgabe nachzuahmen, schließen Sie Ihre Datenbank und starten Sie sie mit dem folgenden Befehl:

"C:\Path\To\msaccess.exe" "C:\Path\To\MyDb.accdb" /cmd Nightly

Access blinkt kurz auf dem Bildschirm, dann sehen Sie das Dialogfeld „Über Windows“ und Access schließt sich selbst.

Einige Anmerkungen

  • AutoExec ist ein spezielles Makro, das automatisch beim Start ausgeführt wird
  • Obwohl der Startup() routine gibt keinen Wert zurück, wir deklarieren sie als Function weil wir einen Sub nicht direkt aufrufen können aus einem Makro in Access
  • Bei normaler Verwendung wird der cmd-Fenstercode übersprungen
  • Ich rufe ausdrücklich Application.Quit auf in meinem „Nightly“-Block, um zu vermeiden, dass Access an Code hängen bleibt, der eine Benutzerinteraktion erfordert (wie der MsgBox-Code in meinem Beispiel)
  • Ich rufe immer Trim() auf rund um den VBA.Command Funktion, um Fehler zu vermeiden, die durch führende oder abschließende Leerzeichen in der Befehlszeile verursacht wurden
  • Als Alternative zu /cmd , können Sie auch /x verwenden wechseln und ihm den Namen eines benutzerdefinierten Makros übergeben (Ich mache das nicht, weil ich Makros mit der Leidenschaft von tausend weißen heißen Sonnen hasse; die einzigen zwei Makros, die ich jemals verwende, sind Autoexec und Autokeys weil sie spezielle Funktionen bieten )

Eine letzte Anmerkung zum Taskplaner und zur Automatisierung anderer Office-Anwendungen

Wenn Ihre Aufgabe nicht zu funktionieren scheint, wenn Sie sie so einstellen, dass sie über Nacht ausgeführt wird, versuchen Sie, die Option für die geplante Aufgabe auf „Nur ausführen, wenn der Benutzer angemeldet ist“ umzustellen.

Office-Anwendungen sind nicht dafür vorgesehen, in dem von Windows als „nicht interaktiv“ bezeichneten Modus ausgeführt zu werden. Wenn Sie eine geplante Aufgabe auf „Ausführen, ob Benutzer angemeldet ist oder nicht“ festlegen, wird diese Aufgabe im nicht interaktiven Modus ausgeführt. Dies kann eine Vielzahl von Problemen verursachen, insbesondere wenn Sie Excel als Teil des wiederkehrenden Prozesses automatisieren.

Die einfachste Lösung besteht darin, die Arbeitsstation zu sperren, anstatt sich abzumelden, und die Option auf "Nur ausführen, wenn Benutzer angemeldet ist" eingestellt zu lassen.

Das ist in Ihrer Situation vielleicht nicht praktikabel, aber es ist eine wichtige Überlegung, der Sie sich bewusst sein sollten. Betrachten Sie sich gewarnt:

Microsoft empfiehlt derzeit keine Automatisierung von Microsoft Office-Anwendungen aus unbeaufsichtigten, nicht interaktiven Clientanwendungen oder -komponenten und unterstützt diese auch nicht