【问题标题】:Word macro to set image layout and size用于设置图像布局和大小的 Word 宏
【发布时间】:2018-11-29 22:16:10
【问题描述】:

我正在尝试录制一个宏,它将粘贴图像的大小设置为 6.5 x 4 厘米,并将图像布局设置为“在文本前面”。我通常通过右键单击图像并设置图片属性来设置它,但在录制宏时这不可用。使用 Shift-F10 确实会调出菜单,但设置图像布局属性的选项是灰色的。

请帮忙!

谢谢

【问题讨论】:

  • 如果您在 AuthorTec Insert 上进行网络搜索,在 AuthorTec Resize 上进行另一个搜索,您可以查看这些 Word 插件(免费)是否可以为您完成这项工作。

标签: vba ms-word


【解决方案1】:

是的,宏记录器很有趣……

如果您将来需要做这样的事情,它将帮助您知道具有任何“文本换行”格式(即“浮动”)的对象是 Shape。行为类似于角色的对象是InlineShape。您可以使用ConvertToInlineShape / ConvertToShape 在两者之间进行转换。对于这种性质的未来事情,应该给你一个起点:-)

以下代码示例使用ConvertToShape,以便可以应用文本换行格式。 (转换是一个额外的步骤,您不必在 UI 中执行 - Word 会为您完成。)

在此之前,代码会更改大小,但也可以反过来,更改 Shape 对象的大小。

代码中还发生了什么:当图片被内联粘贴时,它没有被选中。所以这段代码会计算出文档中已经有多少张图片 (InlineShapes) 直到选择为止。粘贴后,代码会获取到该点的现有图片数量,加一,以获取刚刚粘贴的图片。

代码使用CentimetersToPoints 将所需的厘米数转换为点测量值,因为这是 Word 用来调整图形对象(以及许多其他东西)大小的方法。

我怎么知道使用wdWrapFront:当输入shp.WrapFormat.Type = 时,VBA 编辑器将自动显示用于文本换行格式的有效条目列表。同样,当输入shp. 时,将出现Shape 的有效属性列表,依此类推。 (这称为 IntelliSense,非常有用!)

Sub PasteAndSelectPicture()
    Dim ils As Word.InlineShape
    Dim shp As Word.Shape
    Dim lNrIls As Long
    Dim rngDoc As Word.Range
    Dim rngSel As Word.Range

    Set rngDoc = ActiveDocument.content
    Set rngSel = Selection.Range
    rngDoc.End = rngSel.End + 1

    lNrIls = rngDoc.InlineShapes.Count
    rngSel.Paste
    ' Debug.Print rngDoc.InlineShapes.Count, lNrIls
    Set ils = rngDoc.InlineShapes(lNrIls + 1)
    ils.width = CentimetersToPoints(6.5)
    ils.height = CentimetersToPoints(4)
    Set shp = ils.ConvertToShape
    shp.WrapFormat.Type = wdWrapFront
End SUb

【讨论】:

  • 如果您在 AuthorTec Insert 上进行网络搜索,在 AuthorTec Resize 上进行另一个搜索,您可以查看这些 Word 插件(免费)是否可以为您完成这项工作。
  • @RichMichaels 你的意思是在 OP 上指导这个,我想?将其发布到问题或使用@“ping”OP
猜你喜欢
  • 2022-08-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 2022-11-13
  • 2013-02-26
  • 2020-03-10
  • 2018-03-02
  • 1970-01-01
相关资源
最近更新 更多