Word vba宏查找文本并获取其位置以用文本框替换它

时间:2016-08-31 14:54:25

标签: vba ms-word word-vba

我的目标是用文本框替换ms word文档中的某个文本。此文本框需要包含替换的文本。文本框应出现在与替换文本相同的位置,并且以下内容必须环绕文本框。

使用以下代码,我可以使用文本框和文本框中的替换文本替换文本,但文本框始终位于同一位置。

我现在需要的是,可以获取已找到文本的位置以将其用于文本框以替换找到的文本。 :)

我的代码段:

positionLeft = 50  /* here I need the left position of the found text */
positionTop = 50   /* and here the top position */

With ActiveDocument.Range.find
            .Forward = True
            .Wrap = wdFindStop
            .Text = TextToReplace
            .Execute
            If .Found = True Then
                Dim Box As Shape
                Set Box = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, positionToLeft, positionToRight, 100, 100)
                Box.TextFrame.textRange.Text = TextToReplace
                .Parent = ""
            End If
End With

甚至可以获得word文档中文本的绝对左侧和顶部位置?如果是的话,我怎么能这样做呢?

1 个答案:

答案 0 :(得分:0)

您可以使用Selection.Information(wdVerticalPositionRelativeToPage),Selection.Information(wdHorizo​​ntalPositionRelativeToPage)来查找坐标,但它只是相对于该页面。

我没有测试过这个,但是如果你添加

            .Select 
            x = Selection.Information(wdVerticalPositionRelativeToPage)
            y = Selection.Information(wdHorizontalPositionRelativeToPage)
            Set Box = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,x, y, 100, 100)

它应该有用。