我想做以下事情:
在Excel中,创建表格并定义范围(例如A1到B13是“Arf”,保存在文件中
使用VBA,从Excel移至打开的Word文档
在打开的Word文档中,搜索字符串(例如“[Table goes here]”)
用Excel定义的范围替换Word字符串(例如[Table goes here]替换为“Arf”)
我会为许多不同的表定义很多范围,并且根据我在Excel中使用的预定义表,我会宏将这个定义的范围导入到Word中的相应字符串
到目前为止,我已经找到了许多用于进入和更改文件位置文本的代码,但我希望这适用于当前打开的任何Word文件(同时在两个文件,Excel和Word中工作)。
我真的没有现成的代码,因为我不知道该怎么做,但让我试着给出我在想的东西:
Sub Replace_Word_String_with_Excel_Range()
Application.Goto Reference:="Arf"
Selection.Copy
Application(Word).Find.Replacement
With Selection.Find
.Text = "[Table goes here]"
.Replacement.value = "Arf"
End With
End Sub
我觉得我可以创建一个Excel文件并创建模板,定义表格。我会把它们全部命名(例如Arf,Bark和Woof)。我不明白的是如何通过代码“alt-tab”到Word。我的另一个困惑是如何通过Replacement.Value函数粘贴整个Excel定义的部分。
任何帮助解决这个问题都将非常感激。由于我正在积极研究这个问题,我将尝试编辑此帖子并进行相应更新。
谢谢!
答案 0 :(得分:2)
在Word中使用DocVariables。如果你不知道DocVariables是什么,只需做一点研究,看看如何设置和工作。然后,只需运行下面的脚本,并一如既往地修改以满足您的特定需求。
Sub PushToWord()
Dim objWord As New Word.Application
Dim doc As Word.Document
Dim bkmk As Word.Bookmark
sWdFileName = Application.GetOpenFilename(, , , , False)
Set doc = objWord.Documents.Open(sWdFileName)
'On Error Resume Next
objWord.ActiveDocument.variables("FirstName").Value = Range("FirstName").Value
objWord.ActiveDocument.variables("LastName").Value = Range("LastName").Value
objWord.ActiveDocument.variables("AnotherVariable").Value = Range("AnotherVariable").Value
objWord.ActiveDocument.Fields.Update
'On Error Resume Next
objWord.Visible = True
End Sub
此代码位于Excel中。别忘了在Excel中设置一个引用到MS Word。