Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
引用VBA中已打开的word文档_Vba_Excel_Ms Word - Fatal编程技术网

引用VBA中已打开的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

我使用Excel VBA打开word模板,它使用Excel电子表格中的信息填充模板。从那里,我在电子表格上有一个按钮,我想在word文档中填充另一行,只要单击它。我遇到的问题是,当我运行button宏时,它只是打开另一个word文档并粘贴按钮信息,而不是在已经打开的文档上进行粘贴。我将在下面附上我的代码,我相信这是一个简单的修复方法,我只是似乎找不到解决方法

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