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

MS Word VBA代码将图像与右上角对齐,vba,ms-word,Vba,Ms Word,我试图编写一个VBA宏,将图像与页面右上角对齐,并将文本换行设置为“文本后面”和“页面上的固定位置” 通常我会选择图像并通过对话框进行所有设置。但过了一段时间就变得乏味了。我想知道是否有一种方法可以通过编程实现。我希望我可以打开页眉,粘贴在我的页眉图像中,然后单击一个宏按钮,使宏与仍然选中的图像对齐 我尝试录制一个宏来记录我的操作,但宏没有录制我的任何对话动作(在文本后面、固定页面位置等)。因此,该方法没有提供解决方案。我尝试了页面标题内外的图像,但没有成功 是否可以让某些VBA代码与当前选定的

我试图编写一个VBA宏,将图像与页面右上角对齐,并将文本换行设置为“文本后面”和“页面上的固定位置”

通常我会选择图像并通过对话框进行所有设置。但过了一段时间就变得乏味了。我想知道是否有一种方法可以通过编程实现。我希望我可以打开页眉,粘贴在我的页眉图像中,然后单击一个宏按钮,使宏与仍然选中的图像对齐

我尝试录制一个宏来记录我的操作,但宏没有录制我的任何对话动作(在文本后面、固定页面位置等)。因此,该方法没有提供解决方案。我尝试了页面标题内外的图像,但没有成功

是否可以让某些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