VBAでの文字列の部分置換
VBAでの文字列部分置換とは
VBAでは、文字列の一部を別の文字列に置換することができます。これは、データの整形やテキスト操作を行う際に便利です。
Replace関数を使う方法
VBAには組み込みの Replace
関数があり、これを使うことで簡単に文字列の部分置換が可能です。
Sub Example1()
Dim str As String
str = "Hello, VBA!"
str = Replace(str, "VBA", "World")
MsgBox str ' 結果: "Hello, World!"
End Sub
手動で部分置換を実装する方法
VBAのバージョンによっては Replace
関数が利用できない場合があります。その際は、ループを使って部分置換を実装できます。
Function ManualReplace(ByVal src As String, ByVal oldStr As String, ByVal newStr As String) As String
Dim pos As Integer
pos = InStr(src, oldStr)
Do While pos > 0
src = Left(src, pos - 1) & newStr & Mid(src, pos + Len(oldStr))
pos = InStr(src, oldStr)
Loop
ManualReplace = src
End Function
正規表現を用いた置換
VBAでは RegExp
オブジェクトを使って正規表現を利用できます。
Function RegexReplace(ByVal src As String, ByVal pattern As String, ByVal newStr As String) As String
Dim reg As Object
Set reg = CreateObject("VBScript.RegExp")
reg.Pattern = pattern
reg.Global = True
RegexReplace = reg.Replace(src, newStr)
End Function
応用例
以下に、複数のパターンに対する置換例を示します。
- メールアドレスのマスク処理
- 改行コードの統一
- 特定の単語の削除
Sub Example2()
Dim text As String
text = "Email: example@example.com"
text = RegexReplace(text, "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+", "[メール非表示]")
MsgBox text ' 結果: "Email: [メール非表示]"
End Sub