【发布时间】:2016-01-28 21:50:39
【问题描述】:
我想安排一个任务,该任务打开 Excel 工作簿、运行脚本并在每天指定的时间(隔夜)关闭工作簿。我已经在任务计划程序中安排了任务,并且我知道我可以将代码设置为在打开工作簿时自动运行,但我不希望每次打开工作簿时都运行代码。有没有办法在代码的开头插入一个msgbox,这样如果在60秒内没有对msgbox的响应,它就会自动运行代码。这是我的设想,但无法弄清楚如何格式化它的“案例超时”部分:
Sub Auto_Run()
MsgBox "Would you like to run reports now?", vbYesNo
Case vbYes
'Insert code here
Case Timeout
'paste the same code as for vbYes
Case vbNo
End Sub
【问题讨论】:
-
您是否尝试过在代码中使用
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)? -
你可能需要一个用户表单而不是一个消息框。
-
MsgBox 是模态的,除非得到响应,否则无法执行其他宏。您可以在 MsgBox 之前为 SendKeys 壳一个 vbs 文件,但这并不可靠。所以你最好使用一个用户窗体并在初始化时,用
Application.OnTime在普通模块中调用一个子来开始倒计时并关闭用户窗体。
标签: vba excel scheduled-tasks msgbox