2016-11-25 6 views
-1

Microsoft Wordテンプレート(.dot)ファイルのスクリーンショットをあらかじめ定義されたブックマークに貼り付けるプログラムをC#で作成しています。Microsoft Word Interop:COMException

コードは、Microsoft Word 2007の上で正常に動作しますが、私は次のコード行でこれをやっている2016年

のMicrosoft Word上でランダムに失敗します。コードは、Word 2007で完璧に動作

// wdoc is a word document object 
// bookMarkName is pre-defined in the code 
wdoc.Bookmarks.get_Item(ref bookMarkName).Range.Paste(); 

私は、Word 2016でそれを実行すると、しかし、それはいくつかの時間のために働くし、その後、上記の行で失敗し、次のエラーを示す:それは、Word 2016のために働いて取得する方法を

System.Runtime.InteropServices.COMException (0x800A1066): Command failed at 
Microsoft.Office.Interop.Word.Range.Paste() 

を?

+0

micrsofot.office.interopのような問題がたくさんあります。時にはそれほど安定していないこともあります。私はすべてのワードプロセスを殺してコードを実行していると、最高の経験を得ました。あなたの問題に役立つかどうかわからない – user1519979

+0

ありがとう。私はすでにそれをしました。 – NavkarJ

+0

これは断続的な問題のようです。これらのタイプ(私が見つける)は、すべての環境設定とすべてのソースコードを手にしても解決するのが最も難しいです。あなたは、情報のない横に提供するための助けを求めています。私はそれがあなたがdownvoted得た理由だと思います。 – parvee

答えて

0

ウェブ上で数時間を検索したところ、私は上記の問題に対する解決策と非常に単純なものを見つけました。

明らかな問題は、Word 2016が、開発に使用されたWord 2007のInteropライブラリを完全にサポートしていないことでした。

Interopを使用してMicrosoft Officeアプリケーションとやりとりするプログラムを作成する場合は、バージョンごとに異なるInteropライブラリを使用してプログラムをビルドします。プログラムがターゲットシステムにインストールされたInteropライブラリを自動的に使用すると、システムにインストールされているMicrosoft Officeのバージョンとは独立しているため、より良いでしょう。しかし、私が検索した限り、 。

異なるバージョンのMicrosoft Office用のInteropライブラリをダウンロードする方法が不思議なら、私のアドバイスはそうではなく、代わりに、MS Officeの各バージョンごとにプログラムをビルドすることですそのバージョンのMS Officeがインストールされているシステムで)、異なるバージョンのOffice用にプログラムを個別に配布します。この方法で、ユーザーは自分のシステムにインストールされているMS Officeのバージョンに応じて、適切なバージョンのプログラムをダウンロードすることができます。

関連する問題