You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBA将插入的图片保存到Excel中?含尺寸调整需求

解决方案

1. 让图片嵌入Excel随文档保存的修改

原来的Pictures.Insert方法是链接外部图片,不会把图片数据存入Excel文件。要改成Shapes.AddPicture方法,通过指定两个关键参数实现嵌入:

  • LinkToFile:=msoFalse:不依赖原始图片文件
  • SaveWithDocument:=msoTrue:将图片数据直接嵌入Excel,随文档一起保存

2. 调整图片为原尺寸50%的修改

不要固定宽高数值,先以原始尺寸插入图片(设置Width:=-1和Height:=-1),再将宽度(或高度)乘以0.5,同时锁定纵横比避免图片变形。

修改后的完整代码

Sub add_pictures_R2()
    Dim i%, ppath$
    Dim picShape As Shape ' 声明形状变量,方便后续操作
    
    For i = 2 To 145   
        ' 从A列单元格获取文件名,拼接图片完整路径
        ppath = "C:\Users\myname\output\" & CStr(Cells(i, 1).Value) & ".png"
        
        ' 检查图片文件是否存在
        If Len(Dir(ppath)) Then
            ' 嵌入图片而非链接,参数说明:
            ' Filename: 图片路径
            ' LinkToFile:=msoFalse: 不链接外部文件
            ' SaveWithDocument:=msoTrue: 嵌入到Excel文档
            ' Left/Top: 图片左上角对齐第i行第10列单元格的左上角
            ' Width/Height: -1表示使用图片原始尺寸
            Set picShape = ActiveSheet.Shapes.AddPicture( _
                Filename:=ppath, _
                LinkToFile:=msoFalse, _
                SaveWithDocument:=msoTrue, _
                Left:=ActiveSheet.Cells(i, 10).Left, _
                Top:=ActiveSheet.Cells(i, 10).Top, _
                Width:=-1, _
                Height:=-1)
            
            With picShape
                .LockAspectRatio = msoTrue ' 锁定纵横比,防止图片变形
                .Width = .Width * 0.5 ' 将宽度调整为原始尺寸的50%,高度会自动按比例缩放
                .Placement = xlMoveAndSize ' 图片随单元格移动和调整大小(和原来的1功能一致)
                .PrintObject = True ' 设置图片可打印
            End With
        End If
    Next
End Sub

关键说明

  • 嵌入后的图片会增加Excel文件体积,但换电脑打开时能正常显示。
  • 锁定纵横比后,只需要调整宽度或高度其中一个,另一个会自动按比例变化,避免图片拉伸变形。

内容的提问来源于stack exchange,提问作者Chemist learns to code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 06:18:22