在vba word中查找单词后插入字符串

时间:2017-02-28 12:49:30

标签: vba word-vba

我需要帮助,我是vba中的新词。

我有带有形状对象的word文档。 我成功获得了需要使用此行编辑的特定形状:

Dim c As Range
Set c = ActiveDocument.Shapes(1).TextFrame.TextRange

现在在我希望找到字符串并在特定字符串后添加行的范围内。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

好的,所以c会提到你的形状 您可以使用c.Text来获取形状中的文字。

VBA关键字Instr返回一个字符串在另一个字符串中的起始位置 所以,如果你有一个定义为sTextToFind的变量保持值" DEF " - 请注意两边的空格,以便找到一个完整的单词,另一个lPos来保存该数字的位置串。

lPos = InStr(c, sTextToFind)将返回您的字符串中要查找的文本的位置。

然后,您可以使用LEFTMID将新文本插入现有文字中,将现有文本拆开:
c.Text = Left(c, lPos + Len(sTextToFind) - 1) & "my new text " & Mid(c, lPos + Len(sTextToFind))

所以你的更新代码:

'Shape(1) holds "ABC DEF GHI JKL MNO"
Sub Test()

    Dim c As Range
    Dim lPos As Long
    Dim sTextToFind As String

    sTextToFind = " DEF "

    Set c = ActiveDocument.Shapes(1).TextFrame.TextRange
    lPos = InStr(c, sTextToFind) 'Returns position 4 (the space between C & D).

    'Returns "ABC DEF my new text GHI JKL MNO"
    c.Text = Left(c, lPos + Len(sTextToFind) - 1) & "my new text " & Mid(c, lPos + Len(sTextToFind))

End Sub

答案 1 :(得分:1)

我理解如何添加文本到形状,但我如何在不改变设计的情况下添加文本。 当我使用Darren Bartrup-Cook的代码回答它改变了形状对象的设计。

before  add text

after add text

谢谢, 塔尔