Word VBA宏,它将所有锚点移至浮动图像的顶部

时间:2018-12-11 10:01:23

标签: vba ms-word word-vba

我有一些大型文档,每个文档都有+50张图像。问题在于它们大多数是浮动图像。位置不错,但图像锚定在错误的位置(通常固定在页面的最后一行)。我想将所有锚点移动到图片浮动的位置。

(更精确的描述,来自注释:我想读取图像的位置并将其锚点移到该位置。因此,如果图像位于第3页的中间,而其锚点位于第3页的底部,则我想要将锚点移到此页面的中间。并对所有图像执行相同的操作。)

有可能吗?

我无法使它们内联,这会更改文档的结构。 我试图将它们移动一些值,但是宏不会更改锚点的位置。

enter image description here

1 个答案:

答案 0 :(得分:2)

尝试:

Sub Demo()
Application.ScreenUpdating = False
Dim i As Long, vPos As Single, Rng As Range
With ActiveDocument
  For i = .Shapes.Count To 1 Step -1
    With .Shapes(i)
      .RelativeVerticalPosition = wdRelativeVerticalPositionPage: vPos = .Top
      With .Anchor
        If .Information(wdVerticalPositionRelativeToPage) > vPos Then
          Set Rng = .Paragraphs.First.Range
          Set Rng = Rng.GoTo(What:=wdGoToBookmark, Name:="\page")
          With Rng
            Do While .Paragraphs(1).Range.Characters.Last.Information(wdVerticalPositionRelativeToPage) < vPos
              .Start = .Paragraphs(1).Range.End
            Loop
            .Collapse wdCollapseStart
          End With
          Rng.FormattedText = .FormattedText
          .Delete
        End If
      End With
    End With
  Next
End With
Application.ScreenUpdating = True
End Sub