« [Access] ADOXテンプレート | トップページ | FTPの転送モード »

[VBA] 正規表現オブジェクトの使い方

Windows Script Host(VBScrpt)が使える環境なら、VBやVBAからも正規表現を使う事ができます。

ExcelVBAから正規表現が使えると、いろんな事ができるようになってとっても便利です。

正規表現オブジェクトの参照設定

正規表現オブジェクトを使う前に、参照設定でライブラリを追加しときます。

正規表現オブジェクト参照設定VisualBasicEditorのツール(T) - 参照設定(R)を開いて、「Microsoft VBScript Regular Expressions 5.5」を探し出して、チェックしてください。5.5のところは違うかもしれませんが、タブン、大丈夫です。

正規表現オブジェクト群

正規表現オブジェクトの関連オブジェクト/コレクションは以下の4つです。

・RegExp (メインのオブジェクト)
・MatchCollection (マッチしたデータを保持する)
・Match (マッチしたデータ本体)
・SubMatches (マッチしたデータの中から「抜き出し」を指定したデータ

ちょっと複雑そうですが、基本的に他のオブジェクトを使う時と同じです。

正規表現の基本

サブマッチ(SubMatches)は抜き出しを指定しなければ、必要ありませんので、使うのは3つ

正規表現オブジェクトを生成して、マッチパターンを作成します。HTMLのタグにマッチするパターンです。

Set MyRegExp = New VBScript_RegExp_55.RegExp
MyRegExp.Pattern = "<.*>"

で、実行します。実行結果を MyMatches コレクションに格納して、For Each で順番に回してやればOKです。

Set MyMatches = MyRegExp.Execute("テスト<HTML>TESTテスト")
For Each MyMatch In MyMatches
 Debug.Print MyMatch.Value
Next

Excecuteしただけでは、マッチした部分を取得できないので、面倒ですが上のようにしないといけません。

Debug.Print MyRegExp.Execute("テスト<HTML>TESTテスト")

ってのはダメです。

サブマッチ(SubMatches)の使い方

サブマッチは、マッチした部分の中から、さらに指定した部分を抜き出す為に使います。

上の例で言うと、括弧つきの <HTML> 全体じゃなくて、HTML っていう文字だけを抜き出したい、とかいう場合に使います。

いわゆる、タグ付正規表現です。

パターンを作る時に、括弧 ( ) で囲んだところが抜き出されます。

MyRegExp.Pattern = "<([a-z0-9]+).*?>"

サンプルソースコード

ローカルにあるHTMLファイルを読み込んで、HTMLタグ全体とそのタグ名(要素名)だけを抜き出すサンプルです。

実行結果(イミディエイトウィンドウ)

|

« [Access] ADOXテンプレート | トップページ | FTPの転送モード »

「VBA」カテゴリの記事

「パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/44406/10917129

この記事へのトラックバック一覧です: [VBA] 正規表現オブジェクトの使い方 :

« [Access] ADOXテンプレート | トップページ | FTPの転送モード »