excel - 如何在 LINK 字段中调整图形对象的大小?
问题描述
在将一系列单元格从 Excel 粘贴到 Word (2013) 后,该字段如下所示:
{ LINK Excel.SheetMacroEnabled.12 D:\\20181228\\SC.xlsm Sheet1!R10C1:R10C20" \a \p }
如果使用右键单击对象,选择“设置对象格式”,然后单击“?”,将打开“设置自选图形格式”参考文章。
但是,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
解决方案
链接字段必须是 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
推荐阅读
- ruby - Ruby AWS SDK 循环通过存储桶对象创建 url
- python - Python Selenium 错误 Chromedriver 权限
- javascript - 如何遍历 JavaScript window.history 状态对象?
- python - 这个循环每次循环都会创建一个全新的标签......为什么?
- javascript - rest api express 更新字段
- html - 如何在 html 文本框中用图像替换文本
- php - Facebook Graph 权限不正确
- html - 位置固定显示 flex 保持最后一个孩子最大高度
- python - pandas_datareader 的问题
- python - Python's sh module - is it at all possible for a script to request input?