VB.Net在已经运行的单词实例中使用ActiveDocument
我有一个小型的VB.Net应用程序,它从模板中打开一个新的Word文档(例如打开为Document1.docx)。它运行一些代码来查找替换一些文本。VB.Net在已经运行的单词实例中使用ActiveDocument
然后允许用户编辑打开的文档。有一个小型winform打开一个名为“完成”的按钮。当用户点击这个时,我想要它保存文档并做一些进一步的编辑等。
但是,我无法让代码工作来查看Word运行实例中的活动文档。
每当我引用activedocument时,就会抛出异常,说没有文档打开。
正在寻找保存活动文档的代码与创建Word.Application对象的位置不同。 Word在文档打开的情况下运行,但仍然失败。
我已经尝试了以下内容,以确保它获取打开的单词的实例; WordApp = Marshal.GetActiveObject(“Word.Application”)
但是仍然没有看到任何打开的文件。
有什么建议吗?
编辑#1 - 遗憾的是不包括代码;
这是启动Word并执行一些基本查找/替换的代码。然后它启动form3,在用户编辑word文档时保持原样。此代码从窗体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点击表格3.
昏暗WordApp作为Word.Application 昏暗沃达柯作为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
“一旦沃达柯设置正确,我将使用SaveAs2办理储蓄等
它未能在WordApp.ActiveDocument,说明有没有打开的文档。
请确保oWord在您的Form3范围内。它可能已经在范围内,或者在显示表单之前将Public Word.Applications属性添加到Form3并设置该属性。
在第一种情况下,您访问范围内现有oWord对象上的ActiveDocument,在第二种情况下,您在窗体上设置属性并在显示之前访问该属性。
oWord.ActiveDocument
请原谅我的无知,但你能澄清你的意思吗?我得到这个oWord是由Form2启动的,并且Form3需要访问它。但不确定如何实施您的建议。 –
在这种情况下,选项2可能是最简单的方法。在Form3公共oWord上声明变量随着Word.Application在调用Form3(Form3.oWord = oWord)之前设置它。通过这样做Form3获取范围内的oWord并与您在Form2上创建的Word.Application对象进行交互。 –
明白了 - 您的解决方案有效。非常感谢 –
我建议你展示有关问题的所有代码,使人们可以帮助同意与朋友 –
,我们需要看到的是你已经因此我们可以添加到它的代码。 –
代码根据要求添加了一些解释。 –