2010-11-18 38 views
1

正如标题所说,我已经有了一个带有宏的Word模板,它无法在Office 2011 for MAC的新Word版本中正常运行。带有VBA宏的Word 2003模板在Word 2011 for MAC中无法正常运行

这似乎不能正常工作的事情是下面的代码:

Sub Document_New() 
    myForm.Show 
End Sub 

同样是Document_Open()

它似乎并没有在其上运行的Mac版本的代码。

有谁知道为什么这不会在Mac上工作,或者如果有另一种方法来模拟document_open/document_new功能?

编辑:文档是.dot格式。我试图将它保存为.doc,然后Document_open()工作得很好,所以它似乎不能以.dot格式工作。而Document_New()不在.doc中运行,因为它不是基于新的模板文件在一个文件上。

编辑2:似乎它只是一个与Document_open上.doc文件。我不能让它再次工作。太奇怪了!唯一使用.doc文件格式的事件是Document_Close() - 每次都有效...

编辑3:这只是越来越诡异了。我做了下面的代码创建一个新的.doc文件:

Private Sub Document_Open() 
    MsgBox ("BlaBlaBla") 
End Sub 

的代码只运行,如果在Visual Basic编辑器打开我之前关闭Word文件,并尝试再次打开它。如果关闭Visual Basic编辑器,然后关闭Word文件,然后打开Word文件;代码没有运行。

??

+0

您最后的编辑很有意义。只能有一个VB运行的进程,并且启动VB编辑器时,您可以控制执行(播放/暂停停止按钮)。因此,如果您在使用活动VB编辑器运行_Open()事件时遇到问题,那就是原因。所有应用程序的VB事件都被压制,因为这意味着意外的代码执行。 – jpinto3912 2010-11-18 10:13:58

回答

1

如果VB编辑器处于活动状态,并且当前项目未运行,则会取消所有VB应用程序事件。这是一种有意的行为,以防止不必要的代码执行,因此不可调试。

我已经使用Workbook_Open()(在Excel中),而且我只能从非打开的VB编辑器Excel应用程序中看到它在新打开的Excel XLS(2010上的xlsm)上工作。 它会工作,如果你有其他的doc/xls已经打开,但不是如果VB编辑器启动。

您是否检查过宏是否被允许?您是否生成了证书并将您的应用程序设置为可信来源?

+0

宏是允许的。并且这些事件在工作簿对象上可用。这太奇怪了。现在我只能使用Document_Close()来工作。这只是在使用.doc文件格式时。 – Noop 2010-11-18 09:21:31

+1

对不起,我提到了工作簿对象...这是在Excel上,而不是Word。嗯......让我尝试一些事情来检查为什么会发生这种情况,虽然从您的编辑中可以得到明确的(有意的)行为。 – jpinto3912 2010-11-18 10:02:09

+0

感谢您花时间进行测试!该行为与PC上的Word 2003/2007不同。我没有看到为什么它应该需要您在关闭文档之前打开VB编辑器才能运行这些事件。 – Noop 2010-11-18 10:07:39