在从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
答案 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