如何在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
相关产品推荐
相关产品推荐

