2010-11-18 68 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