.net - Word 互操作 - 如何关闭一个 Word 窗口而不关闭所有窗口?

标签 .net ms-word office-interop word-2003

我正在使用 Microsoft Word 主要互操作程序集来从属 MS Word。我的应用程序打开了它自己的 Word 窗口(使用 Microsoft.Office.Interop.Word.Application 的实例)。在应用程序完成其操作后,我想关闭我打开的 Word 窗口,但是 我不想影响用户可能打开的其他 Word 窗口 .如果我使用 Application.Quit,那么所有 Word 窗口最终都会关闭。如果我使用 Application.ActiveWindow.Close,那么 Word 文档会关闭,但我创建的 Word 窗口仍然保持打开状态,并显示一个不受欢迎的空白屏幕。

如何通过其 API 告诉 Word 关闭我打开的 Word 实例而不影响其他实例?这类似于单击 Word 窗口右上角的 X 时的行为。

最佳答案

我意识到这有点晚了,但这对我有用;

创建 Word 应用程序对象时,创建一个临时 Word 对象,先打开它,然后打开您正确的 Word 文档……然后关闭临时文档。

这可能看起来像是在浪费空间和内存,但这样做是为了确保您创建的 winword.exe 保持独立,并且新创建的 word 文档不会与您的文档 Hook 。

Private sub OpenWord()

Dim MyWord as Object
Dim MyTempWord as Object

//I use the CreateObject in my application, but this will be however 
//you declare your word application 

MyTempWord = CreateObject("Word.Application")
MyWord = CreateObject("Word.Application")
MyTempWord.Quit(SaveChanges:=0)


//*Carry on doing whatever your app does*

//*After Finishing App stuff Close it...*

     If MyWord IsNot Nothing Then
        MyWord.Quit(SaveChanges:=0)
        Marshal.FinalReleaseComObject(MyWord)
    End If

End Sub

为了重现这个问题,我必须在我的应用程序中打开单词,然后通过快捷方式(Microsoft office word)打开一个单独的单词。当我的应用程序调用 MyWord.Quit() 时,它将关闭两个文档实例。问题是新创建的文档挂接到您的应用程序创建的 WINWORD.EXE,因此当您关闭应用程序时,它会关闭另一个文档(即使它们出现在不同的实例中)。

我花了很长时间才修复,我希望它可以帮助其他人!

关于.net - Word 互操作 - 如何关闭一个 Word 窗口而不关闭所有窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7712955/

相关文章:

c# - 基于 DateTime 的有序集合

c# - 如何逐行读取 StreamReader 文本

.net - 将 WCF 服务限制为特定客户端应用程序

C# Word 文档中的分栏符

macos - Mac OS X 上的 Word 文档 (.docx) 编辑器

c# .net interop 关闭对话框

c# - 使用名称访问工作表上的 CustomProperties

c# - 作为 .NET 可执行文件中托管模块的一部分,PE header 和 CLR header 中包含什么?

automation - 自动化 Word 以从 URL 插入图像

c# - 在Word中设置图表系列颜色