【EXCEL VBA】正規表現関連サンプルコード

Sub test()

    Dim r As Range
    Dim str As String
    For Each r In Range("B2:B2000")
        str = r.Value
        r.Offset(0, 1).Value = GetData("[A-Z0-9]{8}", r.Value)
    Next r

End Sub

‘[引数]
‘RegExpr:正規表現パターン
‘InputStr:検索文字列
‘[返り値]
‘InputStr内にRegExprが見つかった場合:抽出した文字列を返す(複数の場合はカンマ区切り)
‘InputStr内にRegExprが見つからなかった場合:""を返す。
Function GetData(RegExpr As String, InputStr As String) As String

    Dim re As RegExp
    Set re = New RegExp
    Dim mc As MatchCollection
    Dim m As Match

    re.Global = True      ‘複数マッチを有効にする。
    re.IgnoreCase = False ‘大文字と小文字を区別すると False、区別しないと True です。既定値は False
    re.MultiLine = False ‘multiline が false のとき、"^" で文字列の先頭位置に一致し、"$" で文字列の最終位置に一致します。
                         ‘multiline が true のとき、"^"で、"\n" または "\r" の直後を含む文字列の先頭位置に一致し、"$" で、"\n" または "\r" の直前を含む文字列の最終位置に一致します。
    re.Pattern = RegExpr
    Set mc = re.Execute(InputStr)
    If mc.Count = 0 Then
        GetData = ""
    ElseIf mc.Count = 1 Then
        Set m = mc(0)
        GetData = m.Value
    Else
        For Each m In mc
            GetData = GetData & m.Value & ","
        Next m
    End If
   

End Function

コメント

タイトルとURLをコピーしました