MS Word宏VBA帮助,选定图像
我有基本的宏和VBA知识,但我无法了解我在这里哪里出错。(底部插入代码)我希望我的宏将选定的图像移动到页面的顶部中心。我面临的问题是,它不会适用于文档中的每个图像,它适用于第一个图像,然后不再执行任务。我正在使用Microsoft Word 2016 主命令执行我想要的操作,我觉得我的错误在这两行之内MS Word宏VBA帮助,选定图像,vba,ms-word,Vba,Ms Word,我有基本的宏和VBA知识,但我无法了解我在这里哪里出错。(底部插入代码)我希望我的宏将选定的图像移动到页面的顶部中心。我面临的问题是,它不会适用于文档中的每个图像,它适用于第一个图像,然后不再执行任务。我正在使用Microsoft Word 2016 主命令执行我想要的操作,我觉得我的错误在这两行之内 Set myDocument = ActiveDocument With myDocument.Shapes(1) 整个代码 Sub AlignToCentre() ' ' AlignToCe
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
如果希望此操作仅用于选定图像,则更类似于此,从当前选择中获取形状 请注意,您应该首先检查以确保已选择形状
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
正如所建议的,你需要在所有的形状中循环,你想把它们都放在中间
试着这样做:
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
正如所建议的,你需要在所有的形状中循环,你想把它们都放在中间
试着这样做:
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
形状(1)将始终返回相同的形状。您应该将索引作为参数传递给子对象,并执行myDocument.Shapes(索引)myDocument.Shapes(1)将始终返回相同的形状。您应该将索引作为参数传递给子对象,并执行myDocument.Shapes(索引)