2016-11-04 82 views
2

我想做到以下几点:使用Excel中定义的范围,替换[文]在打开的Word文档

  1. 在Excel中,创建表并定义范围(例如A1到B13是“东盟地区论坛” ,保存在文件中

  2. 使用VBA,从Excel移动到打开的Word文档

  3. 在打开的Word文档,搜索字符串(如“表到这里]”)

  4. 用Excel定义的范围替换字符串(例如[表格在这里]被替换为“Arf”)

  5. 我将有很多不同的表定义范围,并根据我在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定义的部分。

任何帮助解决这个问题将不胜感激。由于我正在积极研究此问题,因此我将尝试编辑此帖子并进行相应更新。

谢谢!

回答

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设置参考。

+0

只是想要插入并说感谢添加此代码。我需要对它进行测试,但是在过去的几天里,这个项目的时间一直很短暂。当我到达那里时,我会回来添加更新。再次谢谢你! – Cyril

+0

这对我有用。非常感谢! DocVariables信息在试图理解这一切方面起了很大作用。 – Cyril

+0

不错!真高兴你做到了! – 2016-11-10 17:19:52