2014-12-04 195 views
0

我已经安排了一个文件打开,然后运行宏并关闭。一切工作正常,除非我想手动打开文件,它会在运行宏时打开时关闭。 只有当文件自动打开时才可以将宏设置为运行?只有在任务计划程序打开excel文件时,是否可以运行宏?

+0

您也可以在按住Shift的同时手动打开文件以防止Open事件运行。 – Rory 2014-12-04 13:06:41

+0

看到类似的问题[Stack Overflow:使用VB区分来自C#Interop或Excel程序的xlsx事件](http://stackoverflow.com/questions/24457183/use-vb-to-distinguish-between-an-xlsx- event-from-c-sharp-interop-or-excel-progra) – xmojmr 2014-12-04 14:23:30

回答

0

Excel无法检测到它是手动打开还是由调度程序打开。但是,如果您手动打开它,则可以在受保护的视图中打开它,并以这种方式禁用宏。在“打开..”对话框中,点击“打开”按钮上的小箭头,然后选择“受保护的视图”。

1

如果您自己打开文件的时间以及计划程序打开时的时间不重叠,您可以在运行代码之前在当前时间添加检查,并且如果它在窗口内调度程序来运行宏,其他明智的不是。

+0

你能帮我解释一下可能的代码吗? – 2014-12-04 14:32:14

+0

当然,简单来说,这样的事情:'如果小时(现在)= 14 Then' “的代码放在这里当这一天 的14小时内执行完'If' 这应该包含您的工作簿打开宏。如果工作簿在14:00和14:59:59 – Raugmor 2014-12-04 14:39:47

2

听起来像你的小组正在使用Open Event。只需将它作为模块内的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。这样,您可以在任何时候打开并编辑脚本,而无需自动运行。

+0

之间打开,该示例将只运行宏。非常感谢 - 像魅力一样工作! – 2014-12-04 16:55:21

+0

@IlzeGaile另请参阅http://stackoverflow.com/help/someone-answers – xmojmr 2014-12-04 19:28:44

相关问题