簡體   English   中英

僅當 Windows 任務計划程序打開文件時才運行 Excel VBA

[英]Run Excel VBA only if Windows task scheduler opened the file

我有一個小的 Excel 表,用戶每天更新。 它包含一個日期列。

我放了一個小的 VBA 片段,當日期列包含與當前日期相等的日期時發送電子郵件警報,然后關閉文件。

這個 Excel 是從任務計划程序中調用的。

這很有效,但現在每次當用戶打開 excel 時,vba 都會發送一封電子郵件並關閉文件。

是否可以僅在通過任務計划程序打開 excel 時運行 VBA? (或者如果文件由特定用戶(例如管理員)打開)。

正如 Dave 提到的,您可以使用環境變量。 但我個人不會使用“用戶名”或任何其他帳戶方法。 如果您使用環境變量,我建議您只使用“計划”之類的東西,Excel 只需查看變量是否存在。 從任務調度程序調用時,您顯然必須首先設置環境標志。 因此,例如,如果調度程序調用批處理文件,則在執行 Excel.exe 命令之前在批處理文件中設置環境。

但是,您應該也可以在 Excel 命令行的調用中傳遞參數,並在打開的 VBA 中查看該參數是否存在。 如果我沒記錯的話,你可以調用這樣的東西:

"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" SomeBook.xlsm /e
/SomeParameter/

甚至在工作簿 Open 中,您需要使用 API 提取命令行參數。 我認為是這個:

Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineW" () As Long

希望有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM