Chtěli jste někdy spustit nějaký přístupový kód podle automatického plánu?
Ukážu vám, jak používat existující aplikaci Access ke správnému spouštění a ukončení při spuštění pomocí Plánovače úloh, a přitom stále prezentovat přívětivé uživatelské rozhraní při spuštění koncovým uživatelem.
Klíčem k tomu, aby to fungovalo, je /cmd
vlajka.
Předávání argumentů příkazového řádku pro přístup
Chcete-li pro přístup předat argument příkazového řádku, použijte /cmd
argument příkazového řádku při spouštění aplikace:
Udává, že to, co následuje na příkazovém řádku, je hodnota, kterou vrátí Příkaz funkce. Tato možnost musí být posledním přepínačem na příkazovém řádku. Jako alternativu k /cmd můžete použít středník (;). .
Tento přepínač použijte k zadání argumentu příkazového řádku, který lze použít v kódu Visual Basic for Applications (VBA)
Chcete-li načíst text, předejte na příkazovém řádku za /cmd
argument, použijete VBA.Command
funkce.
Tuto funkci můžete použít při spuštění k přesměrování kódu, aby provedl jakoukoli opakovanou úlohu.
Praktický příklad
- Vytvořte novou databázi
- Do nového standardního modulu přidejte následující kód:
Public Function Startup()
If Trim(VBA.Command) = "Nightly" Then
Shell "winver", vbNormalFocus
Application.Quit
End If
MsgBox "Start up"
End Function
- Vytvořte nové makro
- Vyberte „Spustit kód “ z rozbalovací nabídky „Přidat novou akci“
- Nastavte "Function Name" na
Startup()
- Zavřete a uložte makro jako „AutoExec " ."
Spustit jako běžný uživatel
Chcete-li aplikaci otestovat jako běžný uživatel, jednoduše zkomprimujte a opravte databázi.
Zobrazí se okno se zprávou „Spustit.“
Spustit jako naplánovanou úlohu
Chcete-li napodobit běh jako naplánovanou úlohu, zavřete databázi a spusťte ji následujícím příkazem:
"C:\Path\To\msaccess.exe" "C:\Path\To\MyDb.accdb" /cmd Nightly
Access na obrazovce krátce zabliká, poté se zobrazí dialogové okno „O systému Windows“ a Access se sám zavře.
Některé poznámky
AutoExec
je speciální makro, které se spouští automaticky při spuštění- I když
Startup()
rutina nevrací žádnou hodnotu, deklarujeme ji jakoFunction
protože nemůžeme přímo volatSub
z makra v Access - Při běžném používání je kód okna cmd přeskočen
- Výslovně volám
Application.Quit
uvnitř mého bloku "Nightly", aby se zabránilo tomu, že Access visí na kódu, který vyžaduje interakci uživatele (jako je kód MsgBox v mém příkladu) - Vždy volám
Trim()
kolemVBA.Command
funkce, aby se zabránilo chybám způsobeným úvodními nebo koncovými mezerami na příkazovém řádku - Jako alternativa k
/cmd
, můžete také použít/x
přepněte a předejte mu název vlastního makra (Nedělám to, protože nenávidím makra s vášní tisíce bílých horkých sluncí; jediná dvě makra, která kdy používám, jsouAutoexec
aAutokeys
protože poskytují speciální funkce )
Závěrečná poznámka o Plánovači úloh a automatizaci dalších aplikací Office
Pokud se vám zdá, že vaše úloha nefunguje, když jste ji nastavili tak, aby se spouštěla přes noc, zkuste přepnout možnost naplánované úlohy na „Spouštět, pouze když je uživatel přihlášen.“
Aplikace Office nejsou určeny ke spuštění v režimu, který Windows nazývá „neinteraktivní“. Pokud nastavíte naplánovanou úlohu na „Spustit, ať je uživatel přihlášen nebo ne“, bude tato úloha spuštěna v neinteraktivním režimu. To může způsobit různé problémy, zvláště pokud automatizujete Excel jako součást opakujícího se procesu.
Nejjednodušším řešením je zamknout pracovní stanici místo odhlašování a ponechat možnost nastavenou na "Spouštět pouze když je uživatel přihlášen."
To nemusí být ve vaší situaci praktické, ale je důležité si to uvědomit. Myslete na to, že jste varováni:
Microsoft aktuálně nedoporučuje a nepodporuje automatizaci aplikací Microsoft Office z jakékoli bezobslužné, neinteraktivní klientské aplikace nebo komponenty