2017-02-28 15 views
1

私は助けが必要です。vba単語で単語を検索した後に文字列を挿入します。

私はシェイプオブジェクトを持つワードドキュメントを持っています。私は文字列を検索し、特定の文字列の後に行を追加したい範囲では今

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は、ある文字列の開始位置を別の文字列内に返します。
と定義されている変数がある場合は、値が" 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 
関連する問題