MS Word VBA代码将图像对齐到右上角

时间:2017-07-07 23:38:53

标签: vba ms-word

我试图编写一个VBA宏来将图像对齐到页面的右上角,并将文本换行设置为" Behind Text"和"页面上的固定位置。"

通常我选择图像并通过对话框进行所有这些设置。但过了一段时间后它变得乏味。我想知道是否有办法以编程方式进行。我希望我可以打开页眉,粘贴我的标题图像,然后单击一个宏按钮让宏对齐静止选定的图像。

我尝试录制我的操作宏,但是宏没有记录我的任何对话操作(在文本后面,固定页面位置等)。所以该方法没有提供解决方案。我尝试使用页眉内部和外部的图像,但没有成功。

是否可以让某些VBA代码与当前选定的图像对象对齐?理想情况下,我会打开页眉,粘贴我的标题图像,然后运行VBA宏来执行上面的四个操作(在文本后面,页面上的固定位置,顶部对齐页面,右侧对齐页面)。我希望有人可以告诉我如何或指向我一些文档或示例,说明如何做到这一点。

更新

由于某些原因我无法发布到论坛,所以我在这个问题上工作了几天,最后为下一个人拼凑了这个解决方案。我希望我知道在哪里查看手册或教程中的这类东西。

但唯一的方法似乎是在网上论坛上拼凑解决方案。这是我的贡献! : - )

Sub AlignTopRight()
' Paste an image into Word so it is still selected
' Then invoke this macro to align it to the top right corner
' And to set it behind text, fixed position on the page

Application.ScreenUpdating = False
Dim Shp As Shape
On Error Resume Next
    'I'm not sure if this block is required, but it works
     Set Shp = Selection.InlineShapes(1)
     If Not Shp Is Nothing Then
          Set Shp = Selection.InlineShapes(1).ConvertToShape
     Else
          Set Shp = Selection.ShapeRange.Item(1)
     End If

    If Not Shp Is Nothing Then
    With Shp
      .LockAspectRatio = True
      ' for absolute positioning
      '.Left = CentimetersToPoints(5.5)
      '.Top = CentimetersToPoints(0.5)
      '.Width = CentimetersToPoints(2.5)
      'put the image behind text
      .WrapFormat.Type = wdWrapBehind
      'this was the tricky part, discovering this
      .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
      .RelativeVerticalPosition = wdRelativeVerticalPositionPage
      .Top = wdShapeTop 'if you say =0, it sets the AbsolutePx in the dialog
      .Left = wdShapeRight 'these wdShapeXX objects set the Align field in the dialog
    End With
    End If
Set Shp = Nothing
Application.ScreenUpdating = True
End Sub

1 个答案:

答案 0 :(得分:0)

刚刚发现这个功能来回答我自己的问题。请参阅问题发布中的答案。