+ -
当前位置:首页 → 问答吧 → 如何用EXCEL的VBA控制WORD表格?

如何用EXCEL的VBA控制WORD表格?

时间:2009-08-25

来源:互联网

我在excel里已经有相关的一切数据,如何将这些数据传给WORD,并保存和打印?
WORD只要接收数值,不做其它设置变化之类。

请大家指点一下,谢谢!!

附件

j601.rar(10.79 KB)

2009-8-25 00:34, 下载次数: 143

作者: LYYVBA   发布时间: 2009-08-25

'引用Word对象
'请使用普通书签,而不是窗体域,因为窗体域锁定了,可能无法操作。
Sub test()
Dim myDoc As Word.Document
Set myDoc = GetObject(ThisWorkbook.Path & "\j601.doc")
With myDoc
.Application.Visible = False
.Bookmarks("工程名称").Range.Text = Sheet1.Cells(1, 2)
.Application.Visible = True
End With

Set myDoc = Nothing
End Sub

作者: wjhere   发布时间: 2009-08-25

哦,谢谢指教,我吃完饭试试

作者: LYYVBA   发布时间: 2009-08-25

这几天一直自己在查书,因WORD基础差,看得很辛苦,但自己想,一定能弄好它的。

Sub userbm()
Dim myarray()
Dim wdbkmk As String
Dim wdapp As Word.Application
Dim wdrang As Word.Range
Dim mydate As String

Dim i As Integer

'Dim myDoc As Word.Document
'Set myDoc = GetObject(ThisWorkbook.Path & "\j601.doc")

myarray = Array("工程名称", "单元名称", "仪表名称", "仪表型号", "仪表位号", "制造厂", "精确度", "出厂编号", "输入", _
"允许误差", "电气源", "输出", "迁移量", "分度号", "标准表名称")

Set wdapp = GetObject(, "Word.Application")

For i = 1 To 15

Set wdrng = wdapp.ActiveDocument.Bookmarks(myarray(i - 1)).Range
wdrng.Cut
mydate = ActiveWorkbook.Worksheets("Sheet1").Cells(i, 2)
wdrng.InsertBefore (mydate)

Next i

'Set wdrng = wdapp.ActiveDocument.Bookmarks(myarray(1)).Range
'wdrng.Cut
'mydate = ActiveWorkbook.Worksheets("Sheet1").Cells(2, 2)
'wdrng.InsertBefore (mydate)

Set wdapp = Nothing

End Sub

注意,word与excel文件都要打开,当然你可以修改下我的代码。

附件

j601.JPG(86.76 KB)

2009-8-30 04:19

我要睡觉了

作者: LYYVBA   发布时间: 2009-08-30

看不懂啊,高手们, 我想哭 

作者: 淡淡的爱   发布时间: 2009-09-05

运行到仪表名称,出现集合所要求的成员不存在

作者: ke3088   发布时间: 2009-09-11

运行到仪表名称,出现"集合所要求的成员不存在"的错误,是什么原因?请予指教!谢谢!

作者: ke3088   发布时间: 2009-09-13

您好,你要先设置好每一个单元格的名称的。
myarray = Array("工程名称", "单元名称", "仪表名称", "仪表型号", "仪表位号", "制造厂", "精确度", "出厂编号", "输入", _
"允许误差", "电气源", "输出", "迁移量", "分度号", "标准表名称")。。。。。。

这些名称要先在WORD中设置好!

作者: LYYVBA   发布时间: 2009-09-15

我将文件上传给大家参考,呵呵,我只是编写了一部分,其余的大家自己完善吧。

附件

j601.rar(17.87 KB)

2009-9-15 21:31, 下载次数: 180

作者: LYYVBA   发布时间: 2009-09-15

引用:
原帖由 LYYVBA 于 2009-9-15 21:07 发表
您好,你要先设置好每一个单元格的名称的。
myarray = Array("工程名称", "单元名称", "仪表名称", "仪表型号", "仪表位号", "制造厂", "精确度", "出厂编号", "输入", _
"允许误差", "电气源", "输出", "迁移量", ...
我昨天在双击你表中的窗体后,无意中发现了问题的症结所在,不过还是要谢谢你!!
还一个问题:每次使用都要设置VBA的工具--引用,可以编写代码来一次性解决这个问题吗?

作者: ke3088   发布时间: 2009-09-16

LYYVBA兄,运行不了,出现“ActiveX 部件不能创建对象”的错误

作者: ke3088   发布时间: 2009-09-21

请这样执行:
1。下载了程序后先解压在同一目录
2。打开J601.DOC文件,然后再打开J601.XLS文件
3。执行J601.XLS中的userbm宏
   然后去J601.DOC中看结果。

刚才我又试执行一下,可以的。

请你多试验几次。谢谢

作者: LYYVBA   发布时间: 2009-09-23

EXCEL里有2个宏:userbm、test,userbm可以行运行,test不能运行,我说的是test不能运行,不好意思,没讲清楚,谢谢

作者: ke3088   发布时间: 2009-09-24

好贴,很有启发

作者: 222@kk   发布时间: 2009-10-24

那怎么做批量导入哪?

作者: 222@kk   发布时间: 2009-10-24

收藏,好贴.

作者: wanghaiqn1957   发布时间: 2010-06-27

厉害,正在为这个问题愁呢

作者: yhq2000567   发布时间: 2010-09-09

GOOOOOOOOOOOOOOOOOOOOOOOOOD

作者: 3KP   发布时间: 2011-03-13