こんにちは、ユーキです。
今回は、VBAで文字列を置換する関数(Replace)を紹介します。
文字列を置換する(Replace関数)
文字列を置換するには、Replace関数を使用します。
標準的な使い方(単純な置換)
特定の文字列を指定した文字列に置き換えます。
Dim txt As String
txt = Replace("xxx様お世話になっております", "xxx", "伊藤")
MsgBox txt
上記の処理を実行すると、「xxx」部分が「伊藤」に置き換わって、「xxx様お世話になっております」が表示されます。
第1引数に置換対象の文字列、第2引数に置換する文字列、第3引数に置換後の文字列を指定します。
置換対象が複数ある場合
第2引数に指定した文字列が、置換対象に複数含まれる場合はすべて置換されます。
Dim txt As String
txt = Replace("xxx様お世話になっております(xxx)", "xxx", "伊藤")
MsgBox txt
上記の処理を実行すると、「伊藤様お世話になっております(伊藤)」と表示されます。
対象文字列の途中から置換を行う
対象文字列の途中から置換を行う場合は、第4引数 startを指定します。
Dim txt As String
txt = Replace("xxx様お世話になっております(xxx)", "xxx", "伊藤", 5)
MsgBox txt
上記の処理を実行すると、「お世話になっております(伊藤)」と表示されます。
5番目の文字列からを置換対象とするため、最初の4文字が切り取られた形で置換をされます。
置換を何回行うかを指定する
置換する文字列が複数出現する場合に、何回置換をするかを指定することができます。指定は第5引数 count を指定します。
Dim txt As String
txt = Replace("xxx様お世話になっております(xxx/xxx)", "xxx", "伊藤", , 2)
MsgBox txt
上記の処理を実行すると、「伊藤様お世話になっております(伊藤/xxx)」と表示されます。
置換を行う回数を2回に指定しているので、3番目の「xxx」は置換されません。
置換対象の開始位置と、置換行う回数を指定する
第4引数 startと、第5引数 countを両方指定することも可能です。
Dim txt As String
txt = Replace("xxx様お世話になっております(xxx/xxx)", "xxx", "伊藤", 5, 1)
MsgBox txt
上記の処理を実行すると、「お世話になっております(伊藤/xxx)」となります。
正規表現で置換する
Replace関数は正規表現での置換することはできません。
正規表現を使って文字列を置換する場合には、VBScript.RegExpオブジェクトを使います。
以下は携帯電話番号のパターンを指定して、置換するコードになります。
Dim reg As Object
Dim txt As String
Set reg = CreateObject("VBScript.RegExp")
reg.Pattern = "0[789]0-[0-9]{4}-[0-9]{4}"
txt = reg.Replace("お問い合わせ先は、こちら:090-0000-0000。", "070-1234-5678")
MsgBox txt
上記の処理を実行すると、「090-0000-0000」部分が「070-1234-5678」に置き換わって、「お問い合わせ先は、こちら:070-1234-5678。」が表示されます。
Patternプロパティに置換したい正規表現を指定します。置換は、VBScript.RegExpオブジェクトのReplaceメソッドで置換対象の文字列と、置換後の文字列を指定します。
まとめ
今回は、VBAで文字列を置換する関数(Replace)についての紹介でした。
- Replace(対象文字列, 置換前文字列, 置換後文字列)で置換可能
- 置換開始位置を指定するには、第4引数 startを設定する
- 置換回数を指定するには、第5引数 countを設定する
- 正規表現で置換をするには、VBScript.RegExpオブジェクトを使用する
少しでもお役に立てば、幸いです。