2015-09-25 23 views
-1

我在將內容控件添加到文檔時遇到問題。 我需要在指定範圍內將richtextcontentcontrol添加到文檔中的段落中,但是不能用於activedocument,以便我從路徑中打開文檔。此方法或屬性不可用,因爲文檔窗口未激活

Word.Range range = paragraph.Range; 
      range.SetRange(1, 3); 
      try { 

       var richTextControl2 = document.Controls.AddRichTextContentControl(range, "richTextControl" + counter); 
       richTextControl2.PlaceholderText = "Enter your first name"; 
      } 
      catch(COMException e) { 
       Debug.WriteLine("Error :" + e); 
      } 

文件是Microsoft.Office.Tools.Word.Document和段落是Microsoft.Office.Interop.Word.Paragraph 這個例外是上線與AddRichTextContentControl 所有的錯誤是:

System.Runtime.InteropServices.COMException (0x800A11FD): This method or property is not available because a document window is not active. 

回答

0

有可能是有益的提示而已,我面臨着同樣的錯誤目前的描述是使用Document.PrintOut()打印一個不可見的文檔。我認爲這個錯誤在你的情況下可能有同樣的原因。

目前,我在win32上使用非常舊的OLE/COM代碼與Office 2003和2013一起工作。我想更改該代碼,因爲它在打開文檔時顯示Word窗口,而Word在自動啓動時已經可見。一般情況下,代碼可以使用多年,但如果在可見Word窗口中打開文檔,則使用COM進行搜索+替換時會出現性能問題。

只有當沒有Word過程存在可能以前的可見窗口時,我纔會遇到錯誤,並且我打開帶有visible = false的文檔。如果我通過.OpenOld()首先初始化OLE/COM的Word進程,或者只需打開一個文檔就可以看到Word。資源管理器,我不明白這個錯誤。我使用.OpenOld()(很短的時間),因爲我們的代碼使用Word.Application.8到現在和Word 97中的.Open()似乎是.OpenOld()在Word 2003中。我不''我不'期望我們的客戶執行.OpenOld()。但永遠不知道,不想打破它。所以這只是一個後備。不過,這種改變給了我錯誤。

此代碼解決了錯誤,我莫名其妙:

IF __oWord:IWordApplication:可見 __oIWDoc:= oIWordDocuments:打開(__oFS:FULLPATH ,,,,,,,,,,, lNewDocVisible) ELSE __oIWDoc:= oIWordDocuments:OpenOld(__oFS:fullPath) ENDIF

下一步對我來說,是將文檔窗口設置爲在.PrintOut()之前可見。 Word可能已被使用,可能在用戶打開文檔和打印文檔之間關閉。但即使這樣做,我不認爲這是一種信任的方式。目前我想知道,如何安全地打開和打印無形的文檔。 請分享你的結果,如果你近相同的原因:)

希望能幫助許多感謝, 湯姆HORSTMANN

+0

曾爲遠一點這個得到這個錯誤。如果沒有其他文件已經被打開並且可見,激活當前使用的文檔似乎就足夠了: IF!__ oWord:IWordApplication:visible .AND。 __oWord:IWordApplication:對於Windows:計數<2 __oIWDoc:激活() ENDIF 上面的代碼不工作,當在Word 2013沒有打開的文檔在Word窗口是可見的。 –

+0

是的,這是應用程序的問題。可見,不幸的是我需要打開文檔witchout顯示任何新窗口,所以我必須重新構建我的所有插件:/ –

+0

文檔:Activate()似乎在沒有真正顯示窗口的情況下工作。但正如你所說,你需要重建插件,這對你的情況沒有幫助? –