我有一个小的 Excel 表格,每天由用户更新。它包含一个日期列。
我放了一个小 VBA 片段,当日期列包含与当前日期相等的日期时发送电子邮件警报,然后关闭文件。
此 Excel 是从任务计划程序调用的。
这很好用,但现在每次用户打开 excel 时,vba 都会发送一封电子邮件并关闭文件。
只有当通过任务计划程序打开excel时才可以运行VBA? (或者如果文件由特定用户(例如管理员)打开。
最佳答案
正如戴夫提到的,您可以使用环境变量。但我个人不会使用“用户名”或任何其他帐户方法。如果您使用环境变量,我建议您只使用“计划”之类的东西,Excel 只是查看变量是否存在。从任务调度程序调用时,您显然必须首先设置环境标志。因此,例如,如果调度程序调用批处理文件,您在执行 Excel.exe 命令之前在批处理文件中设置环境。
但是,您还应该能够在 Excel 命令行的调用中传递参数,并在 VBA 打开时查看参数是否存在。如果我没记错的话,你可以调用这样的东西:
"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" SomeBook.xlsm /e
/SomeParameter/
并且在工作簿 Open even 中,您需要使用 API 提取命令行参数。我认为是这个:
Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineW" () As Long
希望有帮助。
关于excel - 仅当 Windows 任务计划程序打开文件时才运行 Excel VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33688499/