如何调整 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
在对从 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