MS Word Macro VBA帮助,选定的图像



我有基本的宏观和VBA知识,但无法在这里出错。(插入底部的代码(我希望我的宏将所选图像移动到页面的顶部中心。我面临的问题是,它将对文档中的每个图像不起作用,它适用于第一个图像,然后不再执行任务。我正在使用Microsoft Word2016。

主命令执行我想要的,我觉得我的错误在这两行之内

Set myDocument = ActiveDocument
With myDocument.Shapes(1)

整个代码;

Sub AlignToCentre()
'
' AlignToCentre
    Dim shp As Shape
Set myDocument = ActiveDocument
With myDocument.Shapes(1)
        .WrapFormat.Type = wdWrapSquare
        .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
        .Left = wdShapeCenter
        .RelativeVerticalPosition = wdRelativeVerticalPositionPage
        .Top = InchesToPoints(1)
    End With
End Sub

如果您希望与所选图像和仅选择的图像一起使用,则更类似地从当前选择中获得形状。

请注意如何首先检查以确保选择形状...

Sub PositionSelectedShape()
    Dim sel As word.Selection
    Dim shp As word.Shape
    Set sel = Selection
    If sel.Type = wdSelectionShape Then
        Set shp = sel.ShapeRange(1)
        With shp
            .WrapFormat.Type = wdWrapSquare
            .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
            .Left = wdShapeCenter
            .RelativeVerticalPosition = wdRelativeVerticalPositionPage
            .Top = InchesToPoints(1)
        End With
    End If
End Sub

完全像金·雷纳斯(Kim Raaness(所建议的那样,您需要循环遍历所有的形状。

尝试这样的事情:

Sub AlignToCentre()
'
' AlignToCentre
    Dim shp As Shape
Set myDocument = ActiveDocument
For Each shp in myDocument.Shapes
  With shp
        .WrapFormat.Type = wdWrapSquare
        .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
        .Left = wdShapeCenter
        .RelativeVerticalPosition = wdRelativeVerticalPositionPage
        .Top = InchesToPoints(1)
  End With
Next shp
End Sub

最新更新