ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 175|回复: 6

单元格中的图片另存并且命名

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-12-2 13:14 | 显示全部楼层 |阅读模式
本帖最后由 学的多忘得多 于 2025-12-2 13:22 编辑

制作一段VBA代码,适用于Excel表格,名称叫图片另存命名,要求根据B列嵌入单元格的图片和A列的名称,可以自动提取B列的原图,另存到电脑桌面,图片名称以对应的A列的值为名称,如果有重复的值,则仅保留一张图片,如果碰到单元格没有图片的,就自动跳过。
用豆包生成了下面这段代码,可以运行,但是在桌面没有图片导出来,不知道是导出失败了,还是导到其他地方去了。请大神给我看看,我用的是WPS版本的。


Sub 图片另存命名()
    Dim ws As Worksheet, shp As Shape, rng As Range
    Dim picPath As String, picName As String, existPath As String
    Set ws = ActiveSheet '当前工作表
    picPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" '桌面路径
   
    For Each rng In ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row) '遍历B列有数据区域(从B2开始)
        picName = Trim(rng.Offset(0, -1).Value) '获取对应A列名称
        existPath = picPath & picName & ".png" '图片保存路径及名称(默认PNG格式)
        
        If picName = "" Or Dir(existPath) <> "" Then GoTo NextRng 'A列空或图片已存在,跳过
        
        For Each shp In ws.Shapes '遍历工作表图片
            '判断图片是否嵌入当前B列单元格且未被处理过
            If shp.TopLeftCell.Address = rng.Address And shp.Name <> "已处理_" & picName Then
                shp.Copy '复制图片
                With CreateObject("Excel.Application").Workbooks.Add.Worksheets(1)
                    .Paste '粘贴图片
                    .Shapes(.Shapes.Count).CopyPicture '复制粘贴后的图片
                    With .ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart '创建临时图表
                        .Parent.Select: .Paste '粘贴到图表
                        .Export Filename:=existPath, FilterName:="PNG" '导出图片
                        .Parent.Delete '删除临时图表
                    End With
                    .Parent.Close SaveChanges:=False '关闭临时工作簿
                End With
                shp.Name = "已处理_" & picName '标记已处理图片,避免重复导出
                Exit For
            End If
        Next shp
NextRng:
    Next rng
    MsgBox "图片提取完成,已保存至桌面!"
End Sub


导出图片并且重命名.zip

1.94 MB, 下载次数: 12

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-12-2 13:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 图片另存命名()
    Dim ws As Worksheet, shp As Shape, rng As Range
    Dim picPath As String, picName As String, existPath As String
    Set ws = ActiveSheet '当前工作表
    picPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" '桌面路径
   
    For Each rng In ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row) '遍历B列有数据区域(从B2开始)
        picName = Trim(rng.Offset(0, -1).Value) '获取对应A列名称
        existPath = picPath & picName & ".png" '图片保存路径及名称(默认PNG格式)
        
        If picName = "" Or Dir(existPath) <> "" Then GoTo NextRng 'A列空或图片已存在,跳过
        
        For Each shp In ws.Shapes '遍历工作表图片
            '判断图片是否嵌入当前B列单元格且未被处理过
            If shp.TopLeftCell.Address = rng.Address And shp.Name <> "已处理_" & picName Then
                shp.Copy '复制图片
                With CreateObject("Excel.Application").Workbooks.Add.Worksheets(1)
                    .Paste '粘贴图片
                    .Shapes(.Shapes.Count).CopyPicture '复制粘贴后的图片
                    With .ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart '创建临时图表
                        .Parent.Select: .Paste '粘贴到图表
                        .Export Filename:=existPath, FilterName:="PNG" '导出图片
                        .Parent.Delete '删除临时图表
                    End With
                    .Parent.Close SaveChanges:=False '关闭临时工作簿
                End With
                shp.Name = "已处理_" & picName '标记已处理图片,避免重复导出
                Exit For
            End If
        Next shp
NextRng:
    Next rng
    MsgBox "图片提取完成,已保存至桌面!"
End Sub

TA的精华主题

TA的得分主题

发表于 2025-12-2 13:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
AI经常骗人的

TA的精华主题

TA的得分主题

发表于 2025-12-2 13:56 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-12-2 14:59 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2025-12-2 21:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
WPS嵌入单元格图片导出,试试

导出图片并且重命名.zip

1.94 MB, 下载次数: 13

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-12-4 16:23 | 显示全部楼层
赵桢0611 发表于 2025-12-2 21:17
WPS嵌入单元格图片导出,试试

顶礼膜拜!!!真的可以!!!太棒了!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-5 12:52 , Processed in 0.025020 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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