我创建了一个使用Word.Application
打开word文档的窗体,代码工作正常,我可以查看,编辑和保存文档。
问题是当我打开另一个Microsoft Word实例(在我的应用程序之外)时,单词实例在同一个WINWORD.exe
进程上打开,我的意思是任务管理器进程中只有一个WINWORD.exe
进程无论我打开多少Word实例,因此,我的应用程序外的单词实例无法关闭(使用X按钮,File => Close或Alt + F4),除非我关闭单词实例,否则无法关闭它在我的应用程序内。
我不知道为什么它会在我的应用程序创建的同一个进程上打开,它将新打开的word实例视为我的Word应用程序对象的文档(但是它会在我的应用程序之外的新单词窗口中打开),因此,如果不关闭主应用程序对象,则无法关闭文档。
以下是我用来在表单中加载单词application的代码:
Public Sub LoadDocument(ByVal t_filename As String)
filename = t_filename
If wd Is Nothing Then
wd = New Word.Application()
End If
Try
wd.CommandBars.AdaptiveMenus = False
Catch
End Try
If wordWnd = 0 Then
wordWnd = FindWindow("Opusapp", wd.Caption)
End If
If wordWnd <> 0 Then
SetParent(wordWnd, Me.Handle.ToInt32())
Dim newTemplate As Object = False
Dim docType As Object = 0
Dim [readOnly] As Object = True
Dim isVisible As Object = True
Dim missing As Object = System.Reflection.Missing.Value
Try
If wd Is Nothing Then
Throw New WordInstanceException()
End If
If wd.Documents Is Nothing Then
Throw New DocumentInstanceException()
End If
If wd IsNot Nothing AndAlso wd.Documents IsNot Nothing Then
'Dim HearingTemplet As Word.Template = wd.NormalTemplate
Dim d As Word.Documents = wd.Documents
document = d.Add(fileName, True, docType, isVisible)
document.ShowGrammaticalErrors = False
document.ShowRevisions = False
document.ShowSpellingErrors = False
document.Application.Visible = False
document.Application.Options.SuggestSpellingCorrections = False
document.Application.Options.CheckGrammarAsYouType = False
document.Application.Options.CheckSpellingAsYouType = False
document.Application.Options.CheckGrammarWithSpelling = False
document.SaveAs(fileName)
End If
Catch
End Try
Try
wd.ActiveWindow.DisplayRightRuler = False
wd.ActiveWindow.DisplayScreenTips = False
wd.ActiveWindow.DisplayVerticalRuler = False
wd.ActiveWindow.DisplayRightRuler = False
wd.ActiveWindow.ActivePane.DisplayRulers = False
wd.ActiveWindow.Caption = ""
wd.Options.SaveInterval = 0
wd.Options.AllowFastSave = False
wd.ActiveWindow.Document.ReadOnlyRecommended = True
wd.ActiveWindow.Split = False
wd.Application.DisplayRecentFiles = False
wd.ActiveWindow.ActivePane.View.Type = WdViewType.wdNormalView
wd.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintView
Catch
End Try
Try
wd.Visible = True
wd.Activate()
Catch
End Try
End If
End Sub
PS:无论我打开多少个单词实例,都会出现问题,所有这些单词实例都在同一个进程中打开,所有这些都被视为我的单词应用程序的文档,而我除非我以我的形式关闭Word应用程序,否则无法关闭它们。
答案 0 :(得分:0)
你是否尝试在完成后处理对象或退出应用程序?
wd.quit()
请参阅:https://msdn.microsoft.com/en-us/library/office/ff844895.aspx
或
set wd = Nothing
GC.Collect()