引用VBA中已打开的word文档
我使用Excel VBA打开word模板,它使用Excel电子表格中的信息填充模板。从那里,我在电子表格上有一个按钮,我想在word文档中填充另一行,只要单击它。我遇到的问题是,当我运行button宏时,它只是打开另一个word文档并粘贴按钮信息,而不是在已经打开的文档上进行粘贴。我将在下面附上我的代码,我相信这是一个简单的修复方法,我只是似乎找不到解决方法引用VBA中已打开的word文档,vba,excel,ms-word,Vba,Excel,Ms Word,我使用Excel VBA打开word模板,它使用Excel电子表格中的信息填充模板。从那里,我在电子表格上有一个按钮,我想在word文档中填充另一行,只要单击它。我遇到的问题是,当我运行button宏时,它只是打开另一个word文档并粘贴按钮信息,而不是在已经打开的文档上进行粘贴。我将在下面附上我的代码,我相信这是一个简单的修复方法,我只是似乎找不到解决方法 Sub RepairCal() Dim objWord As Object Dim objDoc As Object Set
Sub RepairCal()
Dim objWord As Object
Dim objDoc As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open("C:\Users\z003narc\Documents\Gage Lab Form Template.docm")
objWord.Activate
With Selection
objWord.ActiveDocument.Selection.MoveDown count:=6
objWord.ActiveDocument.Selection.MoveRight count:=5
objWord.ActiveDocument.Selection.TypeText Text:="Repair and Calibration"
End With
End Sub
您是说每次运行此操作时,文档已经打开了吗?按照您编写代码的方式,它将执行以下操作: 1) 打开新的空白Microsoft Word进程 2) 在新流程中,打开您选择的工作簿 3) 使新进程成为活动窗口 4)
做东西
如果要将其附加到已打开的文件,则需要执行GetObject
而不是CreateObject
。因此,改变:
Set objWord = CreateObject("Word.Application")
到
这将附加到当前打开的进程,然后在该进程中打开工作簿。但是,它仍然会每次打开该文档的一个新副本,因为这就是您告诉它要做的。尝试以下方法:
With objWord
.Selection.MoveDown count:=6
.Selection.MoveRight count:=5
.Selection.TypeText Text:="Repair and Calibration"
End With
如果您的主机是Excel,
选择
指的是在Excel中选择的内容。。。但是带有选择的块没有任何作用,只需将其删除即可。如果您添加了对Microfoft Word类型库的引用,并使用Word.Application
和Word.Document
而不是对象,您的生活会更轻松。嗨,Busse,这就是我遇到麻烦的地方,我不希望它每次都打开新文档,但要参考我已经打开的文件。对不起,我是VBA的新手,我还在学习。不要道歉,生活和学习!我想我误解了这个问题。
With objWord
.Selection.MoveDown count:=6
.Selection.MoveRight count:=5
.Selection.TypeText Text:="Repair and Calibration"
End With