【VBA】文字列から特定のキーワードを切り取った文字列を返すコード

メール本文から「日時:2/2 14:00」の「2/2 14:00」だけを取得したり、「To: abcdefg@gmail.com」の「abcdefg@gmail.com」だけを取得したときに使います。

Function ExtractStringAfterKeyword(originalString As String, keyword As String) As String
    Dim position As Long
    
    ' キーワードの位置を見つける
    position = InStr(originalString, keyword)
    
    If position > 0 Then
        ' キーワード以降の文字列を新しい変数に格納
        ' キーワードの長さも考慮して、その部分から抽出
        ExtractStringAfterKeyword = Mid(originalString, position + Len(keyword))
    Else
        ' キーワードが見つからない場合は空の文字列を返す
        ExtractStringAfterKeyword = ""
    End If
End Function

Sub TestExtractStringAfterKeyword()
    Dim result As String
    result = ExtractStringAfterKeyword("会議は日時: 2024年5月14日 15:00に設定されました。", "日時: ")
    MsgBox result  ' この場合、"2024年5月14日 15:00に設定されました。" が表示されます。
End Sub

Functionの第一引数の文字列の、第二引数のキーワード以降の文字列を返します。

第一引数を「日時:2/2 14:00」として

第二引数を「日時:」とした場合

返る値は「2/2 14:00」となります。

InStr()の使い方

公務員的な事務では、InStrは特定の文字列を含むかどうかという判別で使うことが多いです。

If InStr("Hello World", "World") <> 0 Then

その場合はこのような0以外、または0より大きいといった条件式と組み合わされます。

選んだセルに特定の文字列が含まれるかどうかといった判定ですね。

Dim position As Integer
position = InStr("Hello World", "World")

今回の場合、Worldが何文字目にくるかということを確認する、といった意味で使っています。

この場合はpositon=7になります。

(Helloで5、スペースで6、Wが7文字目です)

コメントを残す

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

CAPTCHA