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

标签 excel scheduled-tasks vba

我有一个小的 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/

相关文章:

vba - 如何使用 VBA 限制图表的源数据?

powershell - 在 PowerShell 脚本中访问 Windows 任务凭据

sitecore - 使用 Sitecore 发布代理并在特定时间发布项目

python - Celery - 安排在特定时间开始的周期性任务

vba - 无法修复类型不匹配错误

vba - 什么可能导致 Range.Copy 抛出错误?

r - 如何在 Excel VBA 中复制 R 子集机制?

sql - 来自 SQL Server 存储过程的 Excel 中的表以及工作簿中的参数字段

vba - 如何在 VBA 的 for 循环中添加 if 语句?

PHPexcel写入下一个空白行?