ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 12534|回复: 7

[求助] 如何在Excel2013中批量插入Word文档(以插入对象方式)?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-4 07:28 | 显示全部楼层 |阅读模式
我有一个Excel2013的Sheet1工作表,B列是文档名称,要求在E列批量插入电脑E盘下Downloads文件夹中对应名称的doc文档(以插入对象方式),怎么操作?

TA的精华主题

TA的得分主题

发表于 2015-7-4 08:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 huang1314wei 于 2015-7-4 08:48 编辑

Sub 批量插入()
    Dim i%, j%
    i = Range("B65536").End(xlUp).Row
    For j = 1 To i
    ActiveSheet.OLEObjects.Add(Filename:="E:\Downloads\" & Cells(j, 2) & ".doc", link:=False, _
     displayasicon:=True, iconfilename:="C:\PROGRA~1\MICROS~2\Office15\WINWORD.EXE", iconindex:=0, _
     iconlabel:="E:\Downloads\" & Cells(j, 2) & ".doc").Select
     ActiveSheet.Shapes("object " & i).IncrementLeft 500 + 20 * i
     ActiveSheet.Shapes("object " & i).IncrementTop 50 + 10 * i     Next
End Sub


TA的精华主题

TA的得分主题

发表于 2015-7-4 08:50 | 显示全部楼层
由于你没有上传附件,也不知道你的电脑上office安装目录,以上代码不保证不出错,建议你通过录制宏插入一个对像,获得相应的代码,然后贴上来,这样我们就能得到相应的文件路径,才能更好的帮你解决问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-9 00:33 | 显示全部楼层
本帖最后由 kong12 于 2015-7-9 00:34 编辑

虽然谢谢楼主的帮助,但是该代码无法实际运行成功。我会改 代码中的 office 目录的。

我在百度知道求助,问题解决了。代码见下

**************************************************************************



http://zhidao.baidu.com/question/561654197617956764

如何在Excel中按名称指定批量插入Word文档(以插入对象方式)

问题:

我有一个Excel的Sheet1工作表,B列是文档名称,要求在E列批量插入电脑E盘下Downloads文件夹中对应名称的doc文档(以插入对象方式),怎么操作

解答:

用VBA即可,步骤如下

1、先建立一个工作薄,其需操作工作表的B列是文档名称,然后在信任中心那里启用宏;

2、按ALT+F11打开VBA,在VBA窗口的工程资源管理器那里找到Project(本excel工作薄名),右击它下面的需操作工作表,插入>模块,然后在模块操作窗口里复制以下VBA代码。


VBA代码见下
********************************************************************************************************
  1. Sub 批量插入WORD对象()
  2.    Dim Ra As Range, Fn$
  3.    '设置Ra为工作表B列1到999行单元格的数据,找到Ra后跳到B列后第3列即E列,如果记录数大于9999,则9999还要改大,请自行修改公式
  4.    For Each Ra In Range("B2", [B9999].End(3))
  5.    '寻找电脑E盘下Downloads文件夹中对应工作表B列数据的文件名的doc文档,请自行修改公式
  6.       Fn = "E:\Downloads" & Ra.Text & ".doc"
  7.    '建立If循环
  8.       If Dir(Fn) <> "" Then
  9.    '由文件插入对象时设置对象源位置,是否链接到文档和显示为图标及图标位置,请自行修改公式
  10.          With ActiveSheet.OLEObjects.Add(Filename:=Fn, Link:=False, DisplayAsIcon:=True, _
  11.             IconFileName:="E:\Downloads\wordicon.exe", _
  12.             IconIndex:=0, IconLabel:=Ra & ".doc")
  13.             .Left = Ra.Offset(, 3).Left
  14.             .Top = Ra.Offset(, 3).Top
  15.    '把行高改为与图标文件一样高,图标就不会相互重叠
  16.             Ra.EntireRow.RowHeight = .Height
  17.          End With
  18.       End If
  19.    Next
  20. End Sub   
复制代码



***************************************************************************************************************


3、在VBA窗口的的菜单栏,工具---宏---选择---批量插入WORD对象()---执行。

===========================================================================================================================


还有更加简化的方法,把该EXCEL文件和所有doc及图标文件放在一个文件夹里,这样这个文件夹拷到任何地方和任何电脑都可使用。

VBA代码见下
***********************************************************************************
  1. Sub 批量插入WORD对象()
  2.    Dim Ra As Range, Fn$, Pa$
  3.    Pa = ThisWorkbook.Path
  4.    For Each Ra In Range("B2", [B9999].End(3))
  5.       Fn = Pa & "" & Ra.Text & ".doc"
  6.       If Dir(Fn) <> "" Then
  7.          With ActiveSheet.OLEObjects.Add(Filename:=Fn, Link:=False, DisplayAsIcon:=True, _
  8.             IconFileName:=Pa & "\wordicon.exe", IconIndex:=0, IconLabel:=Ra & ".doc")
  9.             .Left = Ra.Offset(, 3).Left
  10.             .Top = Ra.Offset(, 3).Top
  11.             Rows(Ra.Row).RowHeight = .Height
  12.          End With
  13.       End If
  14.    Next
  15. End Sub
复制代码



************************************************************************************

这个VBA代码其实可以按名指定 批量插入所有类型的offce文档,xls ppt 等都行,就是改改后缀名 和图标即可
如果要用通配符找文件,然后自己找到满意的图标文件,并按原名给文件起名,代码见下

下两句可配任何后缀名的文件来按名指定查找
     Fn = Dir(Pa & "\" & Ra.Text & ".*")
      If Fn <> "" Then
         
下面一句按原名去掉后缀名给文件起名,要包含在 With ActiveSheet.OLEObjects.Add()语句中。
     IconLabel:=Ra
         




TA的精华主题

TA的得分主题

发表于 2016-12-15 11:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-2-11 14:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢楼主,正好要用,谢谢

TA的精华主题

TA的得分主题

发表于 2019-9-25 15:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不行啊,设置后没反应

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-10-27 16:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Ehco、 发表于 2019-9-25 15:36
不行啊,设置后没反应

可以加 我 Q  851890581 , 帮你看看
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-7-4 04:21 , Processed in 0.032497 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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