Excel工作簿打开事件macros并不总是运行

我有一个Workbook_Open事件macros(它在ThisWorkbook中)并不总是运行。

  • 如果Excel已closures,并且双击Windows资源pipe理器中的.xls文件,它就会运行。
  • 如果我从“开始”/“程序”(不带.xls文件)启动Excel,然后打开文件,它会运行。
  • 如果我已经在Excel中打开文件,但是closures文件(保持Excel打开)并重新打开它,则macros不会运行。

我将安全设置设置为中等,并在打开时启用macros。

我需要做些什么来让macros在我打开的时候运行,而不仅仅是这个Excel会话的第一次呢?

(顺便说一下,这是Excel 2003)

我认为这是关于这个问题的最有说服力的文章 (这是一个长期以来从未解释过的Excel展示的完全不稳定的错误)。 (死链接)

简而言之,在很多情况下,这是一个计时事件,因为工作簿在打开时计算东西,妨碍了Workbook_Open事件。 testing你自己的方法是,首先重命名被单元调用的UDF或者macros,这样它们不会被调用,看看是否改变了什么。

我遇到了同样的问题。

我在我的电脑上testing了一个工作簿,没有任何麻烦。 在把它们分发给我的客户之后,我被告知,一些combobox保持空着。 这些通常从workbook_open例程中填充。 我尝试了不同的事情来启用workbook_open -Event – 没有成功。

最后,我发现禁用所有用户定义的函数(UDF)会导致正确执行workbook_open

由于我的工作簿是从另一个文件打开的,我将尝试将计算设置为手动,然后手动运行workbook_open 。 这可以通过定义来完成

 public sub workbook_open 

代替

 private sub workbook_open 

奇怪的是,excel本身并没有时间…

迟到的答案(比没有好)。

现在我已经有了这个问题几次(使用Excel 2010)。 一直工作的解决scheme(到目前为止)是:移除条件格式,特别是如果它包含UDF作为条件。 正如@LanceRoberts在上面的文章中所写的,最终是由于UDF计算“重写”了Open事件,但是我发现如果在条件格式中使用,这些是特别有害的。

我遇到了几乎完全相同的行为,并且发现这是由于如果条件格式设置规则出错而发生的错误。 事实certificate,如果条件格式化规则基于macros的任何设置,并导致条件格式错误,Workbook_Openmacros甚至不会尝试运行。

要testing,请复制文件,并从工作簿中删除所有条件格式。 保存并重新打开。 如果它修复了您的问题,那么请重新修改条件格式规则,使其不依赖于在Workbook_Openmacros运行之前将被中断的函数/值。

几点build议:

  1. 尝试用数字证书签名工作簿。 将此证书添加到“受信任的证书”存储中,然后重试。
  2. 如果这是机器特定的,请尝试重新安装Office。

确保您已经应用了最新的服务包。

我遇到了同样的问题,我避免使用安全设置。 我使用的选项设置,然后保密中心,然后“保密中心params”(对不起,但它的法文版翻译: – p),然后“文件approuved”或类似的东西。 然后添加包含excel工作簿的文件。之后,它的finnaly工作。

无处不在,永远找不到解决scheme。

希望它会帮助别人

有同样的问题,我想我有它。 如果不是只读的,我不得不放置一个保存工作簿的Workbook_BeforeClose专用子工具; 和确保Application.EnableEvents = True的Workbook_BeforeSave。 这似乎允许Workbook_Open触发。 不是100%确定为什么,但似乎可重复,包括在一个空白的新工作簿。

当一个工作簿被closures与一个Application.EnableEvents设置为false,然后你打开另一个工作簿在同一个Excel中打开的实例。 为避免这种情况,请确保所有禁用事件的进程在终止之前重新启用它们。 特别注意程序中间的“结束”命令,error handling程序和“退出子句”。

造成这种情况的原因是,您的其他存档(即您首先打开的存档)具有Workbook_Open过程; Excel不执行第二次。

这也发生在我身上,花了我几个小时才弄清楚。

原来Excel中的TODAY()函数导致了这个问题。 一旦从我的工作表中删除一切再次工作。 非常奇怪的错误。