我有一个小的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 .
Dim WordApp As 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上失败,声明没有打开的文档 .
1 回答
确保oWord在Form3中的范围内 . 它可能已经在范围内,或者您将一个Public Word.Applications属性添加到Form3并在显示该窗体之前设置该属性 .
在第一种情况下,您在范围内的现有oWord对象上访问ActiveDocument,在第二种情况下,您在窗体上设置属性并在显示之前访问该属性 .