通过VBA将EXCEL的数据传给WORD

现举例说明想实现的功能:
1、设有一名为A的EXCEL文件里的A1=400,B5=3000,
2、还有一名为B的WORD文件里有两行文本:
abcdefg
hijklmn
3、分别把EXCEL里两个单元的数值放到WORD的两行文字后,宏执行后的结果是WORD里的文本变成:
abcdefg400
hijilmn3000

PS1:在对WORD的插入地点进行定位时,我希望的是手工插入一个类似“书签”一样的东西,然后在EXCEL中引用这个“书签”,而不是简单地定为在第一行和第二行的结尾就可以了,上面只是举例说明而己。
PS2:希望有具体的操作过程及宏程序可供学习实践,如在回答前躬身一试小弟不胜感激。
PS3:如果此功能实现,能大量减少我的工作量,感激之情无法言表,追加分数。

将excel和word放在同一目录下,
在excel中建立按钮,双击后输入下列代码:

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False '关闭屏幕刷新
On Error Resume Next '捕捉错误
Dim oSt As Range, wdDoc As Word.Document, wdRange As Word.Range
myPath = ThisWorkbook.Path & "\2.doc" '定义word文件路径,名字自己修改,我设定为2.doc
Set wdDoc = GetObject(myPath) '打开word
Dim key(2) '定义一下数组,
key(1) = "abcdefg" '要替换的数据
key(2) = "hijklmn"
Set wdRange = wdDoc.Content '将word的文档内容赋予wdrange
For i = 1 To 2 '循环
With wdRange.Find
.Text = key(i) '查找
.Replacement.Text = key(i) & IIf(i = 1, Cells(1, 1).Value, Cells(5, 2).Value) '替换
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
wdRange.Find.Execute Replace:=wdReplaceAll '全部替换
Next
wdDoc.Save '保存word
wdDoc.Close '关闭word
Set wdDoc = Nothing
Application.ScreenUpdating = True '开启屏幕刷新
End Sub

经测试,已经达到楼主要求,请追加分数并采纳.呵呵追问

你好:
此句编译没通过,
Dim oSt As Range, wdDoc As Word.Document, wdRange As Word.Range
说是:用户定义类型未定义。
已加Q,请直接将两个文件发给我吧。

追答

哦,忘了告诉你了.打开VBA后需要增加引用:
MIcrosoft Word 12.0 Object Library 控件,否则无法使用

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-22
给个思路,如果要代码,请再联系.
1-在Excel中用VBA把表格中的内容一行一行的写入一个文本文件中
2-在Word中用VBA写入代码,读取你用Excel写入的那个文本文件,调用Word中的替换功能,把Word里的abcdefg替换成为abcdefg+文本文件里的内容就行了.
3-你每次只需打开Excel文件,执行代码,写入文本文件,再打开Word文档,读取文本文件就行.
第2个回答  2011-03-21
你这个问题难度忒大了,我不会,但我每天都要根据一张表发一些短信给相关的人,相信你也是用这些来做格式报告吧,不防都在EXCEL里面做啦,以下是我的做法:
首先,在一个表中做成要达到的格式,固定的就直接输入,不确定的内容则用判断语句进行设定;
其次,就选中复制,粘贴在,TXT文本中;
最后去其中的制表符,用CTRL:+H即可实现
接下来就可以直接用啦,希望能帮到你.
相似回答