如何在“链接”字段中调整图形对象的大小?

时间:2018-12-28 15:10:12

标签: excel ms-word word-field

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

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

如果使用右键单击对象,请选择“设置对象格式”,然后单击“?”,将打开Format AutoShape参考文章。

但是,ActiveDocument.Shapes.SelectAll无法检测到该对象。

尽管错误消息指出此组件可用于图片和OLE对象,但是此代码也无法工作:

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

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

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

更新。@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

1 个答案:

答案 0 :(得分:0)

链接字段必须必须是InlineShape-它不能是Shape,如果可以使用Alt + F9显示该字段,则不能。由于Shape对象具有自动换行格式,因此无法访问与它们关联的任何域代码(通常没有)。

因此,通过Link对象模型可以访问通过InlineShape字段显示的任何对象。

例如,以下代码循环文档中的字段,如果它们是与Excel源链接的字段且包含InlineShape,则将缩放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