只有在Windows任务计划程序打开文件时才运行Excel VBA

大师,

我有一个小Excel表,每天由用户更新。 它包含一个date列。

我把一个小的VBA片段发送电子邮件警报,当date列包含date等于当前date,并closures文件。

这个excel从任务调度器调用。

这很好,但现在每当用户打开excel时,vba会发送一封电子邮件并closures文件。

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

谢谢

正如戴夫提到你可以使用一个环境variables。 但我个人不会使用“用户名”或任何其他帐户的方法。 如果您使用环境variables,我build议您只使用“预定”或其他任何东西,Excel只是看看是否存在variables。 当你从任务调度器调用的时候,你显然必须有一些设置环境标志的东西。 因此,例如,如果调度程序调用batch file,则可以在执行Excel.exe命令之前在batch file中设置环境。

但是,您还应该能够在Excel的命令行的Invokation中传递参数,并在VBA打开时查看参数是否存在。 如果我没有记错的话,你可以这样调用:

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

而且在工作簿打开时,您需要使用API​​提取命令行参数。 我认为这是一个:

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

希望有所帮助。