ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: wuty929

[求助] 如何将excel表格中的数据导入word文档相应位置

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-11-18 15:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢各位的回复!!!但我的文件源数据在Word,而用的是Excel来汇总,所以用邮件合并恐怕不行吧?

TA的精华主题

TA的得分主题

发表于 2010-8-4 10:09 | 显示全部楼层

随心所欲在Word中调用Excel数据(图)

作者:王利兴

    你如果是一个办公室工作人员的话,相信你一定碰到过在Word中调用Excel中的数据打印名单的情况。你是否每次在这个时候就感到特别烦恼呢?

  当然,有一些方法解决问题,譬如Word的“邮件合并”功能可以让众多数据自动按照


   



自己的要求插入到文档中。

  但假如又有另外一个要求——在同一个A4页面中要打印多项数据(为了不浪费纸张^_^),这个时候“邮件合并”功能就不能满足了,因为合并功能不能在一页中设置多项数据(譬如完整的一个信封——包括收件人地址、收件人姓名、寄件人地址等就被视为一页,而不能在同一页中打印两份信封。)

  那么是否有合适的方法呢?当然,微软OFFICE被称为“只有想不到,没有做不到”的顶级办公软件,为我们准备好了足够的功能,那就是使用VBA来减轻我们的负担!

  相信大家对VBA有所耳闻,只是很多朋友没有使用过。VBA是Visual Basic for Application的简称。大家知道Visual Basic是一种编程语言,而VBA就是在Visual Basic平台中将Microsoft Office中的每个应用程序都看成一个对象。每个应用程序都由各自的Application对象代表。在Word中Application对象中包含了Word的菜单栏、工具栏、Word命令等的相应对象,以及文档对象等。各对象包括了Word菜单中的所有命令按钮。如文档对象名称为Documents,其中包括Selections、Tables等。

  要从Excel中引用数据,首先要知道的是其中数据单元格的表示方法。主要有两种方式,即A1和R1C1引用样式。前者是软件默认的方式,即第一个字母表示表格中的列数,第二个数字表示行数,例如A1就表示A列第一个单元格。而在R1C1引用样式中,Excel使用“R”加行数字和“C”加列数字来指示单元格的位置。例如,R1C1即指该单元格位于第1行第1列。

  在Word中调用Excel数据,有两种方式,一种是OLE(对象的链接和嵌入)和DDE(动态数据交换)。这里我们要讲的是后面一种。DDE是一个协议,它允许两个应用程序通过一个DDE“通道”连续自动地进行数据交换。要控制两个应用程序之间的DDE会话,需要建立一个通道,选定一个主题,请求并传送数据,然后关闭通道。

  现在,我们有名称为“1.xls”Excel数据表,如图1,要将其中的数据以个人为单位在Word中打印出来。通过在Word中创建一个名称为“获取数据”的宏,使用DDE方法即可调用出“1.xls”中的数据。运行后的结果如图2。



图1 “1.xls”Excel数据表



图2 运行数据

  下面就来看看具体的代码。

  Sub 获取数据()

  Dim i As Integer //代表行号

  Dim j As Integer //代表列号

  Dim r As String

  Dim c As String

  For i = 2 To 4

  For j = 1 To 3

  chan = DDEInitiate(app:="Excel", topic:="system") //打开一个DDE通道

  DDEExecute channel:=chan, Command:="[open(" & Chr(34) & "d:\1.xls" & Chr(34) & ")]"

  //在一个应用程序中执行打开.xls文件命令,需要指出的是,系统要求所需文件必须放在D盘。

  DDETerminate channel:=chan ——关闭DDE通道

  chan = DDEInitiate(app:="Excel", topic:="1.xls") //打开一个DDE通道

  dse = "r" + CStr(i) + "c" + CStr(j) //确定单元格位置

  b = "教育硕士姓名:"

  e = "准考证号:"

  f = "地址:"

  If j = 1 Then

  a = b + Space(3) + DDERequest(channel:=chan, Item:=dse)

  //需要显示的文字加上三个空格以及按指定单元格获取到的数据,下同

  End If

  If j = 2 Then

  a = e + Space(3) + DDERequest(channel:=chan, Item:=dse)

  End If

  If j = 3 Then

  a = f + Space(3) + DDERequest(channel:=chan, Item:=dse)

  End If

  // 通过判断列号选择显示的文字

  Selection.InsertAfter (a) //在鼠标停留位置插入获得数据

  With Selection.Font //对前面显示的数据进行字体设置

  .NameFarEast = "宋体"

  .Name = "宋体"

  .Size = 14

  .Bold = True

  End With

  Next j

  Next i

  DDETerminateAll //关闭所有以及打开的DDE通道

  End Sub

TA的精华主题

TA的得分主题

发表于 2010-10-18 23:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
3楼说的解决办法结果是无效值,因为我使用了函数。

TA的精华主题

TA的得分主题

发表于 2014-4-9 11:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
数据一多 邮件合并 比较繁琐了 有没有其他方法呢 vba的?

TA的精华主题

TA的得分主题

发表于 2014-4-9 13:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
slm365 发表于 2010-8-4 10:09
作者:王利兴

    你如果是一个办公室工作人员的话,相信你一定碰到过在Word中调用Excel中的数据打印名单 ...

没图没真相 你注释解析的符号也不对

TA的精华主题

TA的得分主题

发表于 2014-4-11 22:05 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-4-12 07:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-10-2 13:15 | 显示全部楼层
execl导入word,关注12楼解法,研究一下。

TA的精华主题

TA的得分主题

发表于 2015-10-13 17:11 | 显示全部楼层
楼主能不能把excel发出来,看看怎么弄!!!

TA的精华主题

TA的得分主题

发表于 2019-10-16 13:13 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 19:39 , Processed in 0.046002 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表