我意識到這是一個有點晚了修復,但這個工作對我來說;
創建Word應用程序對象時,先創建一個臨時Word對象,先打開它,然後打開正確的Word文檔...然後關閉臨時對象。
這可能看起來像是在浪費空間和內存,但這樣做是爲了確保您創建的winword.exe保持獨立,並且新創建的文檔不會與您的文檔掛鉤。
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中,因此,當您關閉應用程序時,它會關閉另一個文檔(即使它們出現在不同的實例中)。
我花了很長時間修復,我希望它可以幫助別人!
爲我工作,但無法理解它背後的邏輯。 – m2pathan