VBAでの文字列の部分置換

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です