■ 最新の投稿

VBA:『VBScript.RegExp』参照設定 vs. 非参照設定(CreateObject)の違い

VBAでは、参照設定する方法と、しない(遅延バインディング)で CreateObjectAs Objectを使う方法があります。

🔷 VBScript.RegExp とは?

VBAでも使える「正規表現」エンジン。
文字列検索・置換・抽出などを強力にこなす、隠れた名COMオブジェクト。

例:VBScript.RegExpを使った場合

▼参照設定(早期バインディング)

参照設定 → 「Microsoft VBScript Regular Expressions 5.5」 を追加します。

Dim regex As VBScript_RegExp_55.RegExp  ' ← 明示的な型指定が可能に!
Dim matches As MatchCollection
Dim match As match

Set regex = New VBScript_RegExp_55.RegExp

regex.Pattern = "\d{3}-\d{4}"   ' 郵便番号みたいなパターン
regex.Global = True
regex.IgnoreCase = True

Set matches = regex.Execute("〒123-4567 Tokyo 03-1234-5678 999-8888")

For Each match In matches
    Debug.Print match.Value
Next

▼ 非参照設定(遅延バインディング)

Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "\d{3}-\d{4}"   ' 郵便番号みたいなパターン
regex.Global = True
regex.IgnoreCase = True

Dim matches As Object
Set matches = regex.Execute("〒123-4567 Tokyo 03-1234-5678 999-8888")

Dim m As Object
For Each m In matches
    Debug.Print m.Value
Next

◆参照設定あり vs. 非参照設定(CreateObject)

項目参照設定あり参照設定(CreateObject)
補完(IntelliSense)あり ✅なし ❌
実行速度速い ✅やや遅い ❌
配布注意必要 ❌安心 ✅(参照設定の誘導なくとも、コードのみ配布できる)
安定性高い ✅やや不安定(バージョン依存)❌

「補完」とはVBA記載中に、ピリオドを押すとプロパティやメソッドが選択できる機能のことです。これは、便利ですよね。


Comments

コメントを残す

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