【发布时间】:2016-11-15 22:40:00
【问题描述】:
我的宏正在运行,为此我创建了一个 vb 脚本并使用 Windows 任务管理器来安排它每天的运行。
每当我手动运行或尝试更改触发器中的时间时,我总是确保 excel 和 Outlook 都没有运行。 如果我在 Excel VBA 中运行宏,它会发送电子邮件。 安排任务每天运行后,作为测试,如果我转到(在 TaskScheduler 中)查看 -> 隐藏任务并手动单击运行,它会发送电子邮件。
但是,如果我安排它在每天的特定时间运行,比如从今天开始,从现在开始 15 分钟,它不会发送电子邮件,并且最后一次运行结果是 (0x0)。
我已启用信任中心设置中的所有宏,并选择了“信任对 VBA 项目对象模型的访问”,这与管理员权限无关。 这是我的 VB 脚本
Dim ObjExcel, ObjWB
Set ObjExcel = CreateObject("Excel.Application")
Set ObjWB = ObjExcel.Workbooks.Open("C:\Users\myUser\MyLocation\MyFile.xlsm")
ObjExcel.Visible = False
ObjExcel.DisplayAlerts = False
ObjExcel.AskToUpdateLinks = False
ObjExcel.AlertBeforeOverwriting = False
'vbs opens a file specified by the path below
'either use the Workbook Open event (if macros are enabled), or Application.Run
ObjExcel.Application.Run "MyFile.xlsm!main_macro"
ObjWB.Save
ObjWB.ActiveWorkbook.Close
ObjExcel.Quit
Set ObjWB = Nothing
Set ObjExcel = Nothing
WScript.Echo "Finished."
WScript.Quit
另外,这是我的 TaskScheduler 设置:
参考:
Sending email from excel automatically based on date
How to set recurring schedule for xlsm file using Windows Task Scheduler
How can you run an Excel macro through a schedule task
Task Scheduler does not run Excel VBA Code to send PDF as Email Attachment
如果我将以下设置为True:
ObjExcel.Visible = False
ObjExcel.DisplayAlerts = False
ObjExcel.AskToUpdateLinks = False
ObjExcel.AlertBeforeOverwriting = False
Excel 以只读模式打开并说单击通知以接收通知,您现在可以编辑工作簿但我无法编辑它,说另一个用户已打开工作簿以供编辑。
【问题讨论】:
-
我假设您已经登录,而任务应该运行,对吧?
-
后台是否有打开的 Excel 进程?也许你的脚本没有干净地关闭你的工作簿。
-
我认为“ObjWB.ActiveWorkbook.Close”这一行应该是“ObjWB.Close”。 ObjWB 已经是工作簿了
-
如果直接运行脚本(文件,而不是任务),会不会出现错误?
-
所以现在脚本运行没有错误,但是excel进程没有退出?
标签: excel email macros scheduled-tasks vba