Czy kiedykolwiek chciałeś uruchomić kod dostępu zgodnie z automatycznym harmonogramem?
Pokażę ci, jak korzystać z istniejącej aplikacji Access, aby płynnie uruchamiać się i zamykać po uruchomieniu za pomocą Harmonogramu zadań, jednocześnie prezentując przyjazny interfejs użytkownika po uruchomieniu przez użytkownika końcowego.
Kluczem do jego działania jest /cmd
flaga.
Przekazywanie argumentów wiersza poleceń do dostępu
Aby przekazać argument wiersza poleceń w celu uzyskania dostępu, użyj /cmd
argument wiersza poleceń podczas uruchamiania aplikacji:
Określa, że to, co następuje w wierszu poleceń, jest wartością, która zostanie zwrócona przez Polecenie funkcjonować. Ta opcja musi być ostatnim przełącznikiem w wierszu poleceń. Możesz użyć średnika (;) jako alternatywy dla /cmd .
Użyj tego przełącznika, aby określić argument wiersza polecenia, który może być użyty w kodzie Visual Basic for Applications (VBA)
Aby pobrać tekst, który przekazujesz w wierszu poleceń, postępując zgodnie z /cmd
argument, używasz VBA.Command
funkcjonować.
Możesz użyć tej funkcji podczas uruchamiania, aby przekierować kod w celu wykonania dowolnego zadania cyklicznego.
Przykład praktyczny
- Utwórz nową bazę danych
- Dodaj następujący kod do nowego modułu standardowego:
Public Function Startup()
If Trim(VBA.Command) = "Nightly" Then
Shell "winver", vbNormalFocus
Application.Quit
End If
MsgBox "Start up"
End Function
- Utwórz nowe makro
- Wybierz „RunCode " z menu "Dodaj nową akcję"
- Ustaw „Nazwa funkcji” na
Startup()
- Zamknij i zapisz makro jako „AutoExec "
Uruchom jako zwykły użytkownik
Aby przetestować aplikację jako zwykły użytkownik, po prostu skompaktuj i napraw bazę danych.
Zobaczysz okno komunikatu z napisem „Uruchom”.
Uruchom jako zaplanowane zadanie
Aby naśladować działanie jako zaplanowane zadanie, zamknij bazę danych i uruchom ją za pomocą następującego polecenia:
"C:\Path\To\msaccess.exe" "C:\Path\To\MyDb.accdb" /cmd Nightly
Program Access zacznie migać na ekranie, a następnie zobaczysz okno dialogowe „Informacje o systemie Windows”, a program Access zamknie się.
Niektóre notatki
AutoExec
to specjalne makro, które uruchamia się automatycznie przy starcie- Nawet jeśli
Startup()
procedura nie zwraca żadnej wartości, deklarujemy ją jakoFunction
ponieważ nie możemy bezpośrednio wywołaćSub
z makra w programie Access - Przy normalnym użytkowaniu kod okna cmd jest pomijany
- Jawnie wołam
Application.Quit
wewnątrz mojego bloku „Nightly”, aby uniknąć zawieszania się programu Access na kodzie wymagającym interakcji użytkownika (takiego jak kod MsgBox w moim przykładzie) - Zawsze wołam
Trim()
wokółVBA.Command
funkcja pozwalająca uniknąć błędów wprowadzanych przez początkowe lub końcowe białe znaki w wierszu poleceń - Jako alternatywa dla
/cmd
, możesz również użyć/x
przełącz i przekaż mu nazwę niestandardowego makra (Nie robię tego, ponieważ nienawidzę makr z pasją tysiąca białych, gorących słońc; jedyne dwa makra, których kiedykolwiek używam, toAutoexec
iAutokeys
ponieważ zapewniają specjalną funkcjonalność )
Ostatnia uwaga na temat Harmonogramu zadań i automatyzacji innych aplikacji pakietu Office
Jeśli zadanie wydaje się nie działać po ustawieniu go na noc, spróbuj zmienić opcję zaplanowanego zadania na „Uruchom tylko wtedy, gdy użytkownik jest zalogowany”.
Aplikacje pakietu Office nie są przeznaczone do uruchamiania w trybie, który system Windows nazywa „nieinteraktywnym”. Jeśli ustawisz zaplanowane zadanie na „Uruchom bez względu na to, czy użytkownik jest zalogowany, czy nie”, to zadanie zostanie uruchomione w trybie nieinteraktywnym. Może to powodować różne problemy, zwłaszcza jeśli automatyzujesz program Excel w ramach powtarzającego się procesu.
Najprostszym rozwiązaniem jest zablokowanie stacji roboczej zamiast wylogowania się i pozostawienie opcji „Uruchom tylko, gdy użytkownik jest zalogowany”.
Może to nie być praktyczne w twojej sytuacji, ale jest to ważna kwestia, o której należy pamiętać. Uważaj się za ostrzeżonego:
Microsoft obecnie nie zaleca i nie obsługuje automatyzacji aplikacji Microsoft Office z dowolnej nienadzorowanej, nieinteraktywnej aplikacji klienckiej lub składnika