我意识到这有点晚了,但这对我有用;
在创建您的 Word 应用程序对象时,创建一个临时 Word 对象,首先打开它,然后打开您的正确 Word 文档……然后关闭临时的。
这看起来像是在浪费空间和内存,但这样做是为了确保您创建的 winword.exe 保持独立,并且新创建的 word 文档不会与您的文档挂钩。
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
为了重现这个问题,我必须在我的应用程序中打开 word,然后通过快捷方式(Microsoft office word)打开一个单独的词。当我的应用程序调用 MyWord.Quit() 时,它将关闭两个文档实例。问题是新创建的文档挂钩到您的应用程序创建的 WINWORD.EXE,因此当您关闭应用程序时,它会关闭另一个文档(即使它们出现在不同的实例中)。
我花了很长时间来修复,我希望它可以帮助其他人!