2017-02-28 95 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