我有一个小的VB.Net应用程序,它从模板打开一个新的word文档(例如打开Document1.docx)。它运行一些代码来找到替换一些文本。
然后,它允许用户编辑打开的文档。打开一个小型winform,并带有一个名为“Complete”的按钮。当用户点击它时,我希望它保存文档并进行进一步编辑等。但是,我无法让代码在Word的运行实例中查看活动文档。
每当我引用activedocument时,它会抛出异常并说没有文档打开。
要保存活动文档的代码位于创建Word.Application对象的单独子目录中。 Word正在运行文档打开但仍然失败。
我已经尝试了以下内容以确保它获得了打开的单词实例; WordApp = Marshal.GetActiveObject(“Word.Application”)
但仍然没有看到任何公开文件。
有什么建议吗?
编辑#1 - 很抱歉不包含代码;
这是启动Word并执行一些基本查找/替换的代码。然后它启动form3,当用户编辑word文档时,form3保持不变。此代码通过单击表单2上的按钮运行;
Dim oWord As Word.Application
Dim oDoc As Word.Document
Dim path As String
path = "C:\Templates/"
Try
oWord = CreateObject("Word.Application")
oWord.Visible = True
Catch ex As Exception
''Some error handling code not included for the purpose of StackOverflow
End Try
Try
oDoc = oWord.Documents.Add(path & "MG11.dot")
Catch ex As Exception
''Some error handling code not included for the purpose of StackOverflow
End Try
With oWord.Selection.Find
''Find & Replace Code - this works so is not included for Stackoverflow
End With
Form3.Show()
Me.WindowState = FormWindowState.Minimized
Form1.WindowState = FormWindowState.Minimized '(form 1 has no code which effects Word)
End Sub
表单3有一个按钮,按下时应保存word文档。它会根据其他地方的信息给它一个文件名。这里只显示基本代码 - 我只需要让vb.net立即查看活动文档。此代码在Button_1上运行Click for Form 3。
将WordApp应用于Word.Application Dim oDoc As Word.Document = WordApp.ActiveDocument
oDoc = WordApp.ActiveDocument
我也试过了;
Dim WordApp As Word.Application
WordApp = Marshal.GetActiveObject("Word.Application")
Dim oDoc As Word.Document
oDoc = WordApp.ActiveDocument
'一旦oDoc设置正确,我将使用SaveAs2来处理保存等
WordApp.ActiveDocument失败,声明没有打开的文档。
答案 0 :(得分:1)
确保oWord在Form3中的范围内。它可能已经在范围内,或者您将一个Public Word.Applications属性添加到Form3并在显示表单之前设置该属性。
在第一种情况下,您在范围内的现有oWord对象上访问ActiveDocument,在第二种情况下,您在表单上设置属性并在显示之前访问该属性。
oWord.ActiveDocument