私は助けが必要です。vba単語で単語を検索した後に文字列を挿入します。
私はシェイプオブジェクトを持つワードドキュメントを持っています。私は文字列を検索し、特定の文字列の後に行を追加したい範囲では今
Dim c As Range
Set c = ActiveDocument.Shapes(1).TextFrame.TextRange
: 私の成功は、私は、この行を編集する必要があり、特定の形状を取得します。
どうすればいいですか?
私は助けが必要です。vba単語で単語を検索した後に文字列を挿入します。
私はシェイプオブジェクトを持つワードドキュメントを持っています。私は文字列を検索し、特定の文字列の後に行を追加したい範囲では今
Dim c As Range
Set c = ActiveDocument.Shapes(1).TextFrame.TextRange
: 私の成功は、私は、この行を編集する必要があり、特定の形状を取得します。
どうすればいいですか?
を私は追加する方法を理解しますテキストを形にすることができますが、どのようにデザインを変更せずにテキストを追加することができます。 Darren Bartrup-Cookのコードで使用すると、形状オブジェクトのデザインが変更されます。
おかげで、 タル
よろしくですので、c
にはあなたの形状への参照が含まれています。
c.Text
を使用して、図形のテキストを取得できます。
VBAキーワードInstr
は、ある文字列の開始位置を別の文字列内に返します。
と定義されている変数がある場合は、値が" DEF "
- 両端にスペースがあるため、単語全体が検索され、lPos
にはその文字列の数値の位置が保持されます。
lPos = InStr(c, sTextToFind)
は、検索するテキストが文字列内のどこから始まるかを返します。
あなたはその後、離れて、既存のテキストを分割するLEFT
とMID
を使用して、既存のテキストに新しいテキストを挿入することができます
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
こんにちはタルは、残念ながらそれはそれがどのように動作するかではありません。あなたはそれを自分自身に与える必要があります。もしあなたがそれをやっていてまだそれができないのであれば、あなたが試したことを私たちに示すためにあなたの質問を更新する必要があります。 – CallumDA
質問を編集します。私はそれがより明確であることを望む。 –