2016-11-25 74 views
-1

我在c#中編寫了一個程序,該程序將截屏並將其粘貼到Microsoft Word模板(.dot)文件中的預定義書籤中。Microsoft Word Interop:COMException

代碼工作在Microsoft Word 2007的罰款,但微軟的Word隨機失敗2016年

我用下面的代碼行這樣做:

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

代碼工作完全在Word 2007中,但是當我在Word中2016運行它,它工作了一段時間,然後在失敗上線,顯示了以下錯誤:

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

如何得到它的工作的Word 2016?

+0

我有很多像micrsofot.office.interop一樣的問題。有時候不太穩定。我得到了最好的經驗,如果我killign所有字處理,然後運行代碼。不知道它是否會幫助你的問題 – user1519979

+0

謝謝。我已經這樣做了。 – NavkarJ

+0

這看起來像是間歇性的問題。即使使用所有環境設置和所有源代碼,這些類型(我發現)都是非常棘手的問題。你需要幫助提供沒有信息。我想這就是爲什麼你被低估了。 – parvee

回答

0

在網上搜索了幾個小時之後,我發現了一個解決上述問題的辦法,而且很簡單。

顯而易見的問題是,Word 2016並未完全支持用於開發的Word 2007的Interop庫。

因此,如果您製作的程序使用Interop與Microsoft Office應用程序進行交互,請針對不同的版本使用不同的Interop庫構建程序。如果程序自動使用安裝在目標系統上的Interop庫,會更好,因爲這會使它獨立於系統上安裝的Microsoft Office的版本,但就我搜索它而言,目前不可能。

如果您想知道如何爲不同版本的Microsoft Office下載Interop庫,我的建議是不這樣做,而是爲每個版本的MS Office單獨構建程序(通過構建它在安裝了MS Office版本的系統上),並分別爲不同版本的Office分發程序。這樣,用戶可以根據他/她的系統上安裝的MS Office的版本,選擇下載適當版本的程序。