2011-06-03 56 views
4

正如標題所示,我有一個.Net應用程序,它使用interop在Word中打開文檔。我打開文件之前已設置如何在使用OLE Interop打開Word文檔時停止運行宏?

app.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable

。根據文檔,thhis「禁用所有文件以編程方式打開的所有宏,沒有顯示任何安全警報」

但是,當我嘗試打開一個特定文檔時,屏幕上出現一個對話框,提示「無法加載一個對象,因爲它在這臺機器上不可用「。這是一個客戶文檔,但我相信它包含一個引用了我沒有安裝的COM對象的宏。

我在做一些愚蠢的事情嗎?有什麼方法可以實際上打開Word文檔時禁用宏?

回答

3

嘗試:

WordBasic.DisableAutoMacros 1

奇怪的是,這依賴於一個倒退到前VBA天,但似乎仍然是確保沒有自動的最可靠的方法觸發宏(在任何文檔中 - 您可能需要使用參數「0」將其返回)。

我最近有一個項目,我不得不處理6,000個Word模板(是的,模板,而不是文檔),其中許多都有像宏一樣的古怪東西,我可以使用這種技術處理除6之外的所有內容。 (我從來沒有弄清楚這些問題是什麼6)。


編輯:對於如何從C#調用這個討論,請參見:http://www.dotnet247.com/247reference/msgs/56/281785.aspx

+0

謝謝,你有什麼想法,我如何從C#調用這個? – Andy 2011-06-07 08:12:53

+0

@Andy:請參閱編輯答案中的鏈接。 – 2011-06-07 12:59:42