如何调整 LINK 字段中的图形对象的大小?

How to resize a graphic object in the LINK field?

在对从 Excel 到 Word (2013) 的一系列单元格进行特殊粘贴链接后,字段如下所示:

{ LINK Excel.SheetMacroEnabled.12 D:\20181228\SC.xlsm Sheet1!R10C1:R10C20" \a \p }

如果您用右键单击对象,select "Format object" 然后单击“?”,Format AutoShape 参考文章将打开。

但是,ActiveDocument.Shapes.SelectAll 没有检测到这个对象。

此代码也不起作用,尽管错误消息表明此组件可用于图片和 OLE 对象:

With ActiveDocument.Shapes(1).PictureFormat 
 .ColorType = msoPictureGrayScale 
 .CropBottom = 18 
End With

这个对象是什么? 我在对象模型 (Word) 中找不到它。

如何通过VBA访问它? 我想以编程方式将一组此类对象的大小调整为原始对象的 90%。

Upd. @Cindy Meister 建议在哪里挖掘,谢谢。 我写了代码,它似乎工作正常:

Sub ResizeImages()
Dim img As Long
With ActiveDocument
For img = 1 To .InlineShapes.Count
    With .InlineShapes(img)
        .ScaleHeight = 90
        .ScaleWidth = 90
    End With
Next img
End With
End Sub

一个 Link 字段 必须 是一个 InlineShape - 它不能是一个 Shape,如果你可以使用 Alt+F9 显示该字段则不行.由于 Shape 对象具有文本换行格式,因此无法访问与其关联的任何字段代码(通常 none)。

因此,通过 Link 字段显示的任何对象都应该通过 InlineShape 对象模型可用。

例如,以下代码循环文档中的字段,如果它们是具有 Excel 源并包含 InlineShape 的 link 字段,则缩放 InlineShape 的尺寸:

Dim fld as Word.Field
For Each fld In ActiveDocument.Fields
    If fld.Type = wdFieldLink
      If fld.Result.InlineShapes.Count > 1 And _
         InStr(fld.OLEFormat.ClassType, "Excel") Then
           Set ils = fld.Result.InlineShapes(1)
           ils.ScaleWidth = 90
           ils.ScaleHeight = 90
      End If
    End If
Next