C# 通过VSTO加载项打开现有MS Word文档以获取异常时,无法关闭Microsoft Word,因为对话框处于打开状态
我开发了一个VSTO插件。我已经创建了一个功能区,它使一个搜索按钮出现在MS Word的外接程序选项卡中 此搜索按钮打开一个窗口,允许用户从云中搜索文档并打开/下载 我想打开正在搜索并从云端下载的文档,并将其打开到现有的MS Word窗口中 我的逻辑是: 当用户下载所选文档时。我正在本地目录中复制它,并试图打开它 示例代码:C# 通过VSTO加载项打开现有MS Word文档以获取异常时,无法关闭Microsoft Word,因为对话框处于打开状态,c#,vsto,office-addins,C#,Vsto,Office Addins,我开发了一个VSTO插件。我已经创建了一个功能区,它使一个搜索按钮出现在MS Word的外接程序选项卡中 此搜索按钮打开一个窗口,允许用户从云中搜索文档并打开/下载 我想打开正在搜索并从云端下载的文档,并将其打开到现有的MS Word窗口中 我的逻辑是: 当用户下载所选文档时。我正在本地目录中复制它,并试图打开它 示例代码: public void OpenDocument(string documentPath, Form form) { _searchForm.Close(); _s
public void OpenDocument(string documentPath, Form form)
{
_searchForm.Close();
_searchForm.Dispose();
Word.Document newDoc = Globals.ThisAddIn.Application.Documents.Open(documentPath);
newDoc.Activate();
}
但是,我得到了以下例外
无法关闭Microsoft Word,因为对话框处于打开状态。单击“确定”,切换到Word,然后关闭对话框
无法在MS Word的活动窗口中打开文档。但是,我可以设法利用变通办法来实现同样的目标 当通过MS Word打开任何新文档时,我检查,如果父窗口(活动窗口)为空,则
//Get the active document.
Word.Document activeDocument = Globals.ThisAddIn.Application.ActiveDocument;
//Check, if Active Window is blank, then we can close it. Once the new Window is Opened. If not,
//we'll open the document in new window
bool closeParentWindow = activeDocument.Content.End - activeDocument.Content.Start == 1 ;
string activeDocName = activeDocument.Name;
//Add the new document which's supposed to open
Word.Document newDoc = this.Application.Documents.Add(path, System.Type.Missing, System.Type.Missing);
newDoc.ActiveWindow.Caption = matterDocument.Document.Name;
if (closeParentWindow)
{
//If Earlier Window/ Document Could be closed. Then need to invoke Close
Word._Document docToClose = Application.Documents[activeDocName] as Word._Document;
docToClose.Close(Word.WdSaveOptions.wdDoNotSaveChanges);
}
嗯,如果从表单中调用了
OpenDocument
,那么表单此时无法完成/被释放,因为它仍在执行。此外,错误消息还提到试图关闭Word应用程序。我在问题中没有看到任何与此相关的代码,因此问题的确切位置尚不清楚…我已经能够解决异常,即“您无法关闭Microsoft Word,因为对话框已打开”。单击“确定”,切换到Word,然后关闭对话框”。使用下面的代码:Word.Document doc=this.Application.Documents.Add(path,System.Type.Missing,System.Type.Missing);但它正在打开一个新的MS Word窗口。我想按设计在现有的(活动Word窗口)中打开它,十多年来,不可能打开多个文档/Word窗口。每个文档都必须在单独的窗口中打开,即使所有这些窗口都是同一Word.Application实例的一部分。这就是你说的吗?谢谢Sindy。当我添加新文档(在单独的窗口中打开)时,有没有办法关闭一个MS Word窗口?非常感谢您的帮助。可能吧,但如果没有确切的细节,我们无法确定。