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
- Erstellen Sie eine neue Datenbank
- 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
- Erstellen Sie ein neues Makro
- Wählen Sie „RunCode " aus der Dropdown-Liste "Neue Aktion hinzufügen"
- Setzen Sie "Funktionsname" auf
Startup()
- 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 alsFunction
weil wir einenSub
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 denVBA.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, sindAutoexec
undAutokeys
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