繁体   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