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

如何在Excel调用VBA操作Word时调整插入的图片尺寸?

原思路不生效的核心原因

你之前试图在InlineShapes.AddPicture的方法参数末尾直接加Height设置的写法行不通,这个方法本身的原生参数列表就根本不支持尺寸配置。AddPicture的设计逻辑就是把图片以原始尺寸插到光标位置,没有留高度、宽度的入参口子,硬把尺寸塞在方法的括号里,直接就会报参数错误的编译问题。

正确的实现逻辑
  • AddPicture执行完会直接返回你刚插进去的那个InlineShape图片对象,根本不需要在调用方法的时候传尺寸参数。只要接住这个返回的对象,单独给它的Height、Width属性赋值,就能完成尺寸调整。
  • Word里默认的尺寸单位是磅,要是习惯用厘米算尺寸,直接用CentimetersToPoints方法转就行,不用自己手动算换算比例。
  • 默认插进来的InlineShape是锁定纵横比的,你只改Height的话,Width会自动等比例跟着变,不会把图拉变形。
改完的可运行代码
Sub CreateWordDocWithPicture()
    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document
    ' 存储插入的图片对象用
    Dim insertedPic As InlineShape
    DocDirectory = "C:\Documents\"
    Set wdApp = CreateObject("Word.Application") ' 启动一个Word实例
    Set wdDoc = wdApp.Documents.Open(DocDirectory & "Template.docx", ReadOnly:=True) 
    ' 打开指定的模板文件
    wdApp.Visible = True
    ' 插入图片,接住返回的形状对象
    Set insertedPic = wdApp.Selection.InlineShapes.AddPicture( _
        Filename:=DocDirectory & "Image.jpg", _
        LinkToFile:=False, _
        SaveWithDocument:=True)
    ' 调整图片尺寸,示例为将高度设为5厘米
    insertedPic.Height = wdApp.CentimetersToPoints(5)
    
    ' 要是需要自定义宽高、取消等比例锁定,就追加以下代码:
    ' insertedPic.LockAspectRatio = msoFalse
    ' insertedPic.Width = wdApp.CentimetersToPoints(8)
End Sub
额外提醒
  • 这套代码是从Excel侧跨应用调用Word编写的,就算没勾选Word对象库的引用也能正常运行,不需要特意去调整引用设置。
  • 要是需要插入多张不同尺寸的图片,每次AddPicture之后给对应的返回对象设置不同尺寸即可,逻辑完全一致。

内容的提问来源于stack exchange,提问作者Russ Verbrugge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 09:36:00