テキストファイルから読み込んで、正規表現で絞り込みして、Excelファイルに出力するVBAのサンプルを紹介します。
仕様
ファイルを1行ずつ読み込み、正規表現にマッチした場合、Excelセルに書き込みます。
今回は正規表現の例として「^.A.$」のパターンにマッチしたものを抽出します。
※正規表現の内容は「行の中にAの文字が含まれること」です。
ソースコード
Sub ボタン1_Click()
Dim i As Long
Dim inputFileName As String
Dim fileNumber As Long
Dim fileLine As String
'正規表現オブジェクトの設定
Dim reg As Object
Set reg = CreateObject("VBScript.RegExp")
With reg
.Pattern = "^.*A.*$" '正規表現パターン
.IgnoreCase = False '大文字と小文字を区別する
.Global = True '文字列全体を検索するか(True)
End With
fileNumber = FreeFile
inputFileName = "C:\temp\test3\input.txt" 'ファイル格納先
Open inputFileName For Input As fileNumber
i = 2 '2行目から
Do While Not EOF(fileNumber)
Line Input #fileNumber, fileLine
If reg.Test(fileLine) Then 'パターン判定
Cells(i, 1) = fileLine
i = i + 1
End If
Loop
Close #fileNumber
End Sub
設定
なお、ExcelVBAで正規表現を実行するためには、下記の設定が必要です。
設定内容
開発ツールの「Microsoft Visual Basic for Applications」のメニューバー「ツール(T) 」> 「参照設定(R)…」を順にクリックします。
「参照設定 – VBAProject」から「Microsoft VBScript Regular Expressions 5.5」を選択します。
テスト実行
テストファイル
テスト用のテキストファイルとして下記のような「C:\temp\test3にinput.txt」を格納しています。
変数のinputFileNameに指定した場所に格納すればOKです。
ボタン押下後
ボタンを押下すると、正規表現”^.A.$”にマッチした1行目、2行目、4行目がファイルから取得されました。
参考情報
環境
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 |
2 | Excel | Excel2016 |
以上です。