2016-11-09 45 views
-1

我搜索了,但還沒有找到適用於我的情況的任何解決方案。下面是我的代碼和我遇到的錯誤的屏幕截圖。我嘗試按照另一篇文章中推薦的方式運行管理員。Office.Interop.Word.Document.Open引發COMException

最終目標是使用C#以編程方式遍歷目錄中的文檔並替換超鏈接地址。

誤差爲行:

Microsoft.Office.Interop.Word.Document document = applicationObject.Documents.Open(FileName: file); 

..和讀取:

的 'System.Runtime.InteropServices.COMException' 類型的未處理的異常發生在ConsoleApplication1.exe中

+1

「該文件似乎已損壞」,留下很少的想象力。試試另一個。並使用try/catch,很多理由爲什麼打開文檔不起作用。 –

回答

2

您可能試圖打開不是錯誤的Word文檔的文件,它甚至可能是隱藏的文件,例如Thumbs.db。

過濾任何非Word文件類型:

foreach (var file in files) 
{ 
    // GET FILE EXTENSION 
    var extension = System.IO.Path.GetExtension(file); 

    // IF THE FILE TYPE IS NOT A WORD FILE, SKIP THIS ITERATION 
    if (extension.ToLower() != ".docx" && extension.ToLower() != ".doc") 
     continue; 

    // Rest of your logic here 
} 
+0

我現在能夠訪問文檔,但是當我嘗試顯示地址時,我得到了相同的COMException。任何想法爲什麼? –

+0

不確定你的意思是顯示地址。你能否在你的問題中顯示相關的代碼,並指出你得到了什麼錯誤? – Equalsk

+0

只是評論部分。 –

0

這是更好的過濾是這樣的:

string[] files = System.IO.Directory.GetFiles(dir, "*.doc", System.IO.SearchOption.TopDirectoryOnly); 
0

我也曾在我的VB項目中遇到此。 這是打開word/excel文檔時創建的隱藏文件。 但是,一旦文檔被正確關閉,這個損壞的文件就會消失;否則,它將保持並提示此錯誤消息。

只需在重新運行該程序之前刪除該隱藏文件。

這是我第一次發佈答案,也是我的新手。 希望這會有所幫助。 :)