【VBA】正規表現(RegExp)を使う方法(パターン一致と置換を説明)

今回はVBAで正規表現を使う方法を紹介します。

この記事では↓の内容が分かります。

  1. 正規表現とはどのようなものか
  2. 正規表現によるパターン一致の確認
  3. 正規表現にマッチした文字列を置換する

正規表現とは

正規表現とは、ある特定のパターンを持つ文字列を指定する表記法の一つ。文字列の検索や置換、抽出などを行う際の対象の指定などのために用いられる。

出典:IT用語辞典 e-Words

例えば、\dが任意の数字を表したり、\wが任意の文字を表したりします。

また、前方一致や後方一致といった指定の仕方もできます。

なお、VBAで正規表現を使用する場合、VBScript内のライブラリを使用します。参照設定を追加する方法もありますが、今回はCreateObjectで参照する方法でお見せします。

正規表現によるパターン一致の確認(testメソッド)

Sub Sample1()
    
    'RegExpオブジェクトの生成
    Dim reg As Object
    Set reg = CreateObject("VBScript.RegExp")
    
    With reg
        .Pattern = "\d" 'パターン(正規表現)を指定
        .IgnoreCase = False '大文字と小文字を区別するか
        .Global = True '文字列全体を検索
        
        'パターン一致判定
        If .test("123456789a") Then
            MsgBox "パターンと一致します"
        Else
            MsgBox "パターンと一致しません"
        End If
    End With
End Sub

このサンプルコードを元にパターン一致の確認方法を紹介します。

    With reg
        .Pattern = "\d" 'パターン(正規表現)を指定
        .IgnoreCase = False '大文字と小文字を区別するか
        .Global = True '文字列全体を検索

正規表現を使う場合、最初に正規表現のパターンの指定などを行います。

        'パターン一致判定
        If .test("123456789a") Then
            MsgBox "パターンと一致します"
        Else
            MsgBox "パターンと一致しません"
        End If

準備が終わった後、testメソッドを使用してパターン一致の確認をします。

testメソッドは引数がパターンと一致するときはTrueを一致しないときはFalseを返します。

パターン一致を確認したいときはtestメソッドを使うと覚えてください。

        .Pattern = "^\d" '前方一致
        .Pattern = "\d$" '後方一致
        .Pattern = "\d{10}" '連続した数値が10個ある

一度実行してみたら、パターンを↑のように変更して色々と試してみましょう。

何度も試してみると正規表現の理解が深まりますよ。

正規表現にマッチした文字列を置換する(Replaceメソッド)

Sub Sample2()
    
    'RegExpオブジェクトの生成
    Dim reg As Object
    Set reg = CreateObject("VBScript.RegExp")
    
    With reg
        .Pattern = "\d" 'パターン(正規表現)を指定
        .IgnoreCase = False '大文字と小文字を区別するか
        .Global = True '文字列全体を検索
        
        '文字列を置換
        MsgBox .Replace("12a45b78c", "W")
    End With
End Sub

正規表現による文字列の置換はReplaceメソッドを使います。

Replaceメソッドは1つ目の引数から、パターンと一致した文字列を、2つ目の引数へ置換します。

サンプルコードではパターンを数値にしているため、文字列内の124578がWに置換されます。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2023/06/06 16:32:04時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい