2016-11-09 2 views
-1

Я искал, но не нашел решения, применимого к моей ситуации. Ниже приведено скринкап моего кода и ошибка, которую я получаю. Я пробовал работать как администратор, как рекомендовано в другом сообщении.Office.Interop.Word.Document.Open throwing 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.

отфильтровывать несловообразующим: Типы файлов

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. Но этот поврежденный файл исчезнет, ​​как только документ будет закрыт должным образом; в противном случае он останется и запросит это сообщение об ошибке.

Просто удалите этот скрытый файл перед тем, как перезапустить программу.

Это мой первый ответ на вопрос, а также я новичок в SO. Надеюсь, что это поможет. :)