我有基本的宏观和VBA知识但却无法理解我在这里出错的地方。 (代码插在底部)我希望我的宏将所选图像移动到页面的顶部中心。我面临的问题是它不适用于文档中的每个图像,它适用于第一个图像然后不再执行任务。我使用的是Microsoft Word 2016。
主命令执行我想要的操作,我觉得我的错误在这两行内
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
答案 0 :(得分:1)
如果您希望使用所选图像,并且仅使用所选图像,则更像这样,从当前选择中获取形状。
请注意您应该首先检查以确保选择了一个Shape ...
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
答案 1 :(得分:0)
正如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