我已经安排了一个文件打开,运行宏并在此之后关闭。一切正常,除非我想手动打开文件,它在运行宏时打开时关闭。 是否可以将宏设置为仅在文件自动打开时运行?
答案 0 :(得分:3)
听起来你的Sub正在使用Open事件。只需将其作为regualr Sub,在模块中,并使用您的vbs
脚本打开工作表并运行宏。
我曾经一直这样做,但找不到我的旧脚本。找到了这个,我知道它与我的旧版相似。
Dim xlApp
Dim xlWkb
Set xlApp = CreateObject("excel.application")
Set xlWkb = xlApp.Workbooks.Open("PATH TO YOUR FILE")
xlApp.Visible = True
xlWkb.RunAutoMacros 1 'enables macros to be run on open
xlApp.Run ("YOUR PROCEDURE")
xlApp.Workbooks("YOUR WORKBOOK NAME").Save 'Save the workbook
xlApp.Quit 'quits excel
另存为.vbs和日程安排。找到示例here。这样,您可以随时打开和编辑脚本,而无需自动运行。
答案 1 :(得分:1)
如果您自己打开文件的时间和调度程序打开时的时间从不重叠,您可以在运行代码之前添加对当前时间的检查,如果它在调度程序的窗口内运行宏,其他明智的不是。
答案 2 :(得分:0)
Excel无法检测是手动打开还是由调度程序打开。但是,如果您手动打开它,可以在受保护的视图中打开它并以这种方式禁用宏。在' Open ..'对话框单击'打开'上的小箭头。按钮,然后选择“受保护的视图”。