VBAで特定の文字より後を抽出する方法|InStrとMid関数の組み合わせで対応
目次
スポンサードリンク
文字列の中から「ある特定の文字や記号の後ろの部分だけを取り出したい」という処理は、VBAの文字列操作でよくあるパターンです。この記事では、InStr 関数と Mid 関数を組み合わせて、特定の文字より後の文字列を抽出する方法を紹介します。
基本構文 InStr と Mid の組み合わせ
特定の文字より後ろを部分的に取得したいときは、InStr と Mid 関数を組み合わせて実行します。
以下の例では、”abc:def” の中から、コロン : より後ろの文字を取得しています。 InStr(str, “:“) は、文字列strの中で : が登場する位置(番号)を返します。Mid 関数は、 : が登場する位置から1文字後(+1)の位置を起点に、文字列strの末尾までを取得しています。
Dim str As String
str = "abc:def"
Dim result As String
result = Mid(str, InStr(str, ":") + 1)
' 変数 result の内容は "def"
応用例 ファイルパスからファイル名を取得する方法
下記例では、ファイルパスを保持する変数 path を対象に、パスの区切り文字 \ が出現する位置を使ってファイル名を抽出しています。この例では、InStr関数ではなく、InStrRev関数を使用しています。InStrRev関数は後ろから検索する関数で、最後の \ の位置を取得するために使っています。
Dim path As String
path = "C:\Users\Sample\Document.xlsx"
Dim fileName As String
fileName = Mid(path, InStrRev(path, "\") + 1)
' 変数 fileName の内容は "Document.xlsx"
まとめ
このテクニックは、CSVの列抽出・ファイル名取得・識別子の分割処理など、幅広い用途に活用できます。
関連記事
VBAで特定の文字より前を抽出する方法|InStrとLeft関数の組み合わせで対応
Excel VBAのテクニックを幅広く学べるおすすめ書籍
基本の定番ネタから応用的なテクニックまで、網羅的にテクニックを学べる書籍です。Microsoft365/Office2024対応。手元に置いておきたい一冊です。
中級者以上におすすめの書籍
VBAというプログラミング言語を本格的に学びたい人におすすめの書籍です。VBAの言語としての仕組みをしっかり理解したい人に。