通过VBA将EXCEL的数据传给WORD
(2015-07-22 19:07:27)
标签:
it |
分类: ◆VBA |
通过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中建立按钮,双击后输入下列代码:
PrivateSub Commanon1_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 '开启屏幕刷新
EndSub
经测试,已经达到楼主要求,请追加分数并采纳.呵呵
追问:
你好:
此句编译没通过,
Dim oSt As Range, wdDoc As Word.Document, wdRange As Word.Range
说是:用户定义类型未定义。
已加Q,请直接将两个文件发给我吧。
追答:
哦,忘了告诉你了.打开VBA后需要增加引用:
MIcrosoftWord 12.0 Object Library 控件,否则无法使用
━━━━━━━━━━━━━━━━━━━━━━━━━
现举例说明想实现的功能:
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
End
追问:
你好:
此句编译没通过,
Dim
说是:用户定义类型未定义。
已加Q,请直接将两个文件发给我吧。
追答:
哦,忘了告诉你了.打开VBA后需要增加引用:
MIcrosoft