Word文档中如何批量插入带文件名的图片_编写宏代码自动读取文件夹并插入图片

发布时间 - 2026-01-28 00:00:00    点击率:
可通过VBA宏在Word中批量插入指定文件夹图片并自动添加加粗绿色文件名题注;需启用开发工具、粘贴代码、支持多格式扩展、调整宏安全设置后运行,再手动优化图片布局与题注对齐。

如果您需要在Word文档中批量插入来自指定文件夹的图片,并为每张图片自动添加对应文件名作为题注,则可以通过编写VBA宏实现自动化处理。以下是完成该任务的具体步骤:

一、启用开发工具并创建新宏

Word默认不显示“开发工具”选项卡,需先启用该功能以便编辑和运行宏代码。启用后,可新建一个标准模块用于编写插入图片的VBA逻辑。

1、点击“文件”→“选项”→“自定义功能区”→勾选“开发工具”→点击“确定”。

2、切换到“开发工具”选项卡,点击“Visual Basic”打开VBA编辑器。

3、在VBA编辑器中,右键“Normal”或当前模板→选择“插入”→“模块”,新建一个空白模块。

二、粘贴并修改图片插入宏代码

该宏将遍历指定路径下的所有支持格式图片(如.jpg、.png、.bmp),逐个插入文档,并在每张图片下方插入加粗的绿色文件名作为题注。

1、在新建模块中粘贴以下完整VBA代码:

Sub InsertImagesWithFilename()
Dim fd As FileDialog
Dim folderPath As String
Dim fileName As String
Dim doc As Document
Dim ilsh As InlineShape
Dim para As Paragraph
Set doc = ActiveDocument
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show -1 Then Exit Sub
folderPath = fd.SelectedItems(1) & "\"
fileName = Dir(folderPath & "*.jpg")
Do While fileName ""
  Set ilsh = doc.InlineShapes.AddPicture(FileName:=folderPath & fileName, LinkToFile:=False, SaveWithDocument:=True, Range:=Selection.Range)
  Set para = doc.Paragraphs.Add(Range:=Selection.Range)
  para.Range.Text = "" & fileName & ""
  para.Range.Font.Bold = True
  para.Range.Collapse Direction:=wdCollapseEnd
  Selection.EndKey Unit:=wdStory
  Selection.TypeParagraph
  fileName = Dir
Loop
fileName = Dir(folderPath & "*.png")
Do While fileName ""
  Set ilsh = doc.InlineShapes.AddPicture(FileName:=folderPath & fileName, LinkToFile:=False, SaveWithDocument:=True, Range:=Selection.Range)
  Set para = doc.Paragraphs.Add(Range:=Selection.Range)
  para.Range.Text = "" & fileName & ""
  para.Range.Font.Bold = True
  para.Range.Collapse Direction:=wdCollapseEnd
  Selection.EndKey Unit:=wdStory
  Selection.TypeParagraph
  fileName = Dir
Loop
fileName = Dir(folderPath & "*.bmp")
Do Whi

le fileName ""
  Set ilsh = doc.InlineShapes.AddPicture(FileName:=folderPath & fileName, LinkToFile:=False, SaveWithDocument:=True, Range:=Selection.Range)
  Set para = doc.Paragraphs.Add(Range:=Selection.Range)
  para.Range.Text = "" & fileName & ""
  para.Range.Font.Bold = True
  para.Range.Collapse Direction:=wdCollapseEnd
  Selection.EndKey Unit:=wdStory
  Selection.TypeParagraph
  fileName = Dir
Loop
MsgBox "图片插入完成!共插入带文件名标注的图片若干张。"
End Sub

三、调整宏以支持更多图片格式

原始代码仅覆盖.jpg、.png、.bmp三种格式;若需兼容.gif、.tiff等,可在同一模块中追加对应扩展名的Dir循环段落,每次循环前重置fileName变量并指定新通配符。

1、在上述代码末尾“MsgBox”之前插入新循环段落:

fileName = Dir(folderPath & "*.gif")
Do While fileName ""
  Set ilsh = doc.InlineShapes.AddPicture(FileName:=folderPath & fileName, LinkToFile:=False, SaveWithDocument:=True, Range:=Selection.Range)
  Set para = doc.Paragraphs.Add(Range:=Selection.Range)
  para.Range.Text = "" & fileName & ""
  para.Range.Font.Bold = True
  para.Range.Collapse Direction:=wdCollapseEnd
  Selection.EndKey Unit:=wdStory
  Selection.TypeParagraph
  fileName = Dir
Loop

四、设置宏安全性并运行

Word默认禁用宏以防止恶意代码执行,需临时将宏安全级别设为“启用所有宏”或“通知我”才能运行自定义脚本。操作后务必恢复至推荐级别。

1、点击“文件”→“选项”→“信任中心”→“信任中心设置”→“宏设置”。

2、选择“启用所有宏(不推荐;可能会运行有潜在危险的代码)”或“通知我有关宏的启用。”

3、返回Word主界面,在“开发工具”选项卡中点击“宏”,选择“InsertImagesWithFilename”,点击“运行”。

4、在弹出的文件夹选择窗口中,定位到存放图片的目标文件夹,点击“确定”。

五、手动修正图片排列与题注格式

宏插入的图片为InlineShape类型,会随文字流换行;若需统一居中、固定尺寸或改为浮动式布局,需在插入后单独选中图片进行样式调整。

1、按住Ctrl键依次单击各张图片,批量选中所有已插入的InlineShape对象。

2、右键任意一张图片→“设置图片格式”→“大小”选项卡→取消勾选“锁定纵横比”,输入统一高度(如8厘米)。

3、再次右键→“环绕文字”→选择“上下型”或“四周型”,使图片脱离内联限制。

4、选中全部题注文本(即文件名部分),点击“开始”选项卡→“居中”按钮,使其与上方图片对齐。


# word  # app  # 工具  # word文档  # 排列  # asic  # if  # while  # 循环  # 对象  # 自动化  # 开发工具  # 选项卡  # 题注  # 右键  # 自定义  # 勾选  # 新建一个  # 加粗  # 若需  # 文档 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高防服务器:AI智能防御DDoS攻击与数据安全保障  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Laravel怎么为数据库表字段添加索引以优化查询  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  简单实现jsp分页  Android滚轮选择时间控件使用详解  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  制作旅游网站html,怎样注册旅游网站?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  大型企业网站制作流程,做网站需要注册公司吗?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  详解jQuery停止动画——stop()方法的使用  iOS正则表达式验证手机号、邮箱、身份证号等  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  nginx修改上传文件大小限制的方法  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何在阿里云完成域名注册与建站?  Laravel如何自定义分页视图?(Pagination示例)  JavaScript实现Fly Bird小游戏  如何获取免费开源的自助建站系统源码?  如何快速搭建个人网站并优化SEO?  Python图片处理进阶教程_Pillow滤镜与图像增强  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  如何确认建站备案号应放置的具体位置?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  JavaScript如何操作视频_媒体API怎么控制播放  Android中AutoCompleteTextView自动提示  桂林网站制作公司有哪些,桂林马拉松怎么报名?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  浅谈Javascript中的Label语句  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  Android 常见的图片加载框架详细介绍  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  如何在腾讯云服务器上快速搭建个人网站?  如何在阿里云部署织梦网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何快速使用云服务器搭建个人网站?  如何续费美橙建站之星域名及服务?  如何快速查询网址的建站时间与历史轨迹?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何在Windows 2008云服务器安全搭建网站?