2016-11-09 1 views
-1

私は検索しましたが、私の状況に該当する解決策は見つかりませんでした。以下は私のコードのスクリーンキャプチャとエラーです。私は別の投稿で推奨されるように管理者として実行しようとしました。Office.Interop.Word.Document.Open throw COMException

最終的な目標は、C#を使用してプログラムでディレクトリ内のドキュメントを検索し、ハイパーリンクアドレスを置き換えることです。

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

..And読み取り:

型 '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

、それはこのようにフィルタリングするために立派だ:私も私のVBプロジェクトでこれを発生している

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

。 これは、単語/ Excel文書を開くときに作成される隠しファイルです。 しかし、この破損したファイルは、文書が正常に閉じられると消えてしまいます。それ以外の場合は、このエラーメッセージが表示されたままになります。

プログラムを再実行する前に、この隠しファイルを削除するだけで済みます。

これは私の初めての回答であり、私は新しいことです。 これが役立つことを願っています。 :)