我有基本的宏观和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