Word 2019 VBA插入图片到书签后无法调整高度求助
Word VBA插入图片后无法调整高度的解决方案
你的代码核心问题是用了.InlineShapes(1)来引用图片——这个索引指向的是文档里第一个内嵌形状,而非你刚插入的那一张。如果文档原本就有其他内嵌元素(比如之前插入的图片、图表),你修改的就不是目标图片,自然看不到效果。
修正后的代码如下,关键是把刚插入的图片直接赋值给变量,再对变量进行调整:
Sub InsertImage() Dim FD As FileDialog Dim strPictureFile As String Dim wrdDoc As Word.Document Dim ishp As Word.InlineShape ' 改为单个InlineShape对象,而非集合 Set FD = Application.FileDialog(msoFileDialogFilePicker) With FD .Title = "选择要插入的图片" .Filters.Clear .Filters.Add "图片文件", "*.jpg; *.bmp; *.gif" .AllowMultiSelect = False If .Show <> -1 Then MsgBox "未选择图片" Exit Sub End If strPictureFile = .SelectedItems(1) End With Set wrdDoc = ActiveDocument With wrdDoc If .Bookmarks.Exists("BasketIso1") Then ' 将插入的图片直接赋值给变量ishp Set ishp = .InlineShapes.AddPicture( _ FileName:=strPictureFile, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Range:=.Bookmarks("BasketIso1").Range _ ) ' 对变量进行大小调整 ishp.LockAspectRatio = True ishp.Height = InchesToPoints(1.78) End If End With End Sub
额外提示:
- 去掉了
On Error Resume Next,它会掩盖代码里的潜在错误(比如书签不存在、图片路径无效),不利于调试。如果需要错误处理,可以在关键位置添加On Error GoTo的结构化错误处理。 - 变量
ishp从InlineShapes集合改为单个InlineShape对象,更贴合需求,避免集合操作的歧义。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

