仅当Windows任务计划程序打开文件时才运行excel VBA

时间:2015-11-13 08:27:09

标签: excel excel-vba scheduled-tasks vba

大师,

我有一个excel表,每天由用户更新。它包含一个日期列。

我添加了一个小的VBA代码段,当日期列包含与当前日期相同的日期时,它会发送电子邮件警报,而不是关闭文件。

这个excel从任务调度程序调用。

这很好用,但现在每次用户打开excel时,vba都会发送一封电子邮件并关闭该文件。

只有在通过任务计划程序打开excel时才能运行VBA吗? (或者如果文件由特定用户(例如管理员)打开。

谢谢

1 个答案:

答案 0 :(得分:1)

正如戴夫所说,你可以使用环境变量。但我个人不会使用“用户名”或任何其他帐户方法。如果您使用环境变量,我建议您只使用“预定”或其他类似的东西,Excel只是查看变量是否存在。从任务调度程序调用时,您显然必须首先设置环境标志。因此,例如,如果调度程序调用批处理文件,则在执行Excel.exe命令之前在批处理文件中设置环境。

但是,您还应该能够在Invokation of 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

希望有所帮助。