2017-02-28 99 views
1

我需要帮助,我新的vba单词。在vba词中查找单词后插入字符串

我有形状对象的word文档。 我成功得到一个特定的形状,我需要用这条线编辑:

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

现在我想找到字符串和特定字符串后面添加行范围。

我该怎么做?

+4

喜塔尔,不幸的是,这不是它的工作原理。你需要自己动手。如果你有一个去做,但仍然无法做到,那么你只需要更新你的问题,告诉我们你已经尝试了什么,我们将非常乐意提供帮助。 – CallumDA

+0

我编辑我的问题。我希望它更清楚。 –

回答

1

我知道如何添加文字来塑造,但我如何在不改变设计的情况下添加文字。 当我使用Darren Bartrup-Cook的代码时,回答它改变了形状对象的设计。

before add text

after add text

感谢, 塔尔

0

好吧,所以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 
相关问题