如何获取Excel中通过「置于单元格」功能插入图片的原文件名?
获取Excel「置于单元格」图片的原文件名方法
方法一:VBA宏批量提取(推荐)
适合批量处理大量图片,自动将文件名写入图片所在单元格的右侧相邻单元格:
- 打开目标Excel文件,按下
Alt + F11打开VBA编辑器 - 右键左侧工程窗口中的当前工作簿,选择「插入」>「模块」
- 将以下代码粘贴到模块窗口:
Sub GetPlacedInCellImageNames() Dim ws As Worksheet Dim shp As Shape Dim imgCell As Range ' 指定要处理的工作表,可改为 Sheets("你的工作表名") Set ws = ActiveSheet For Each shp In ws.Shapes ' 筛选出置于单元格的图片类型 If shp.Type = msoPicture And Not shp.TopLeftCell Is Nothing Then Set imgCell = shp.TopLeftCell ' 提取原文件名(Excel默认将原文件名附加在Shape名称后,格式为"Picture X - 原文件名") Dim nameSplit() As String nameSplit = Split(shp.Name, " - ") If UBound(nameSplit) >= 1 Then imgCell.Offset(0, 1).Value = nameSplit(1) Else ' 若图片被重命名,显示当前Shape名称 imgCell.Offset(0, 1).Value = shp.Name End If End If Next shp End Sub
- 按下
F5运行宏,或回到Excel界面,通过「开发工具」>「宏」选择GetPlacedInCellImageNames执行
方法二:手动提取(适合少量图片)
- 点击选中单元格内的图片
- 查看Excel窗口左上角名称框(编辑栏左侧的输入框),里面的名称格式通常为
Picture X - 原文件名.扩展名 - 提取
-后面的文件名部分,手动输入到相邻单元格
注意事项
- 如果图片被手动重命名过,名称框中的原文件名会丢失,此时只能获取修改后的Shape名称
- 仅适用于从本地文件插入的「置于单元格」图片,网络插入的图片无本地原文件名信息
内容的提问来源于stack exchange,提问作者stack-delay
相关产品推荐
相关产品推荐

