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

在vba word中查找单词后插入字符串,vba,ms-word,Vba,Ms Word,我需要帮助,我有一个新的vba单词 我有word文档和形状对象。 我成功获得了需要使用以下行编辑的特定形状: Dim c As Range Set c = ActiveDocument.Shapes(1).TextFrame.TextRange 现在在这个范围内,我想找到字符串并在特定字符串后面添加行 我该怎么做呢?好的,c保存了对您形状的引用。 您可以使用c.text获取形状中的文本 VBA关键字Instr返回一个字符串在另一个字符串中的起始位置。 因此,如果您有一个定义为sTextToFi

我需要帮助,我有一个新的vba单词

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

Dim c As Range
Set c = ActiveDocument.Shapes(1).TextFrame.TextRange
现在在这个范围内,我想找到字符串并在特定字符串后面添加行


我该怎么做呢?

好的,
c
保存了对您形状的引用。
您可以使用
c.text
获取形状中的文本

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

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

然后,您可以使用
LEFT
MID
将新文本插入现有文本,以将现有文本分开:
c.Text=Left(c,lPos+Len(sTextToFind)-1)和“我的新文本”以及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

我知道如何将文字添加到形状中,但我知道如何在不改变设计的情况下添加文字。 当我和Darren Bartrup Cook的代码一起使用时,答案是改变形状对象的设计

谢谢,
好未来

好未来,不幸的是,它不是这样工作的。你需要自己试一试。如果你想尝试一下,但仍然做不到,那么你只需要更新你的问题,向我们展示你的尝试,我们将非常乐意提供帮助。我编辑了我的问题。我希望它更清楚。