技術情報
オブジェクトとコレクション
Classステートメントにより作成されるオブジェクトを指します。
Classオブジェクトを使用するには、Classのインスタンスを作成しなければなりません。

イベント
  • Initializeイベント
  • クラスのインスタンスが生成されるときに発生するイベントです。

    書式 Private Sub Class_Initialze
      ...
    End Sub
    Classステートメントで定義するクラス中で記述することができます。

  • Terminateイベント
  • クラスのインスタンスが終了するときに発生するイベントです。

    書式 Private Sub Class_Terminate
      ...
    End Sub
    Classステートメントで定義するクラス中で記述することができます。

(例)
'変数の宣言
Dim myObj
'クラスのインスタンス作成
Set Obj = new myClass
'クラスメソッドを実行
Obj.Test

'=====[Class定義]=====
Class myClass
Private Sub Class_Initialize()
  MsgBox "初期化します"
End Sub

Public Sub Test()
  MsgBox "テストです"
End Sub

Private Sub Class_Terminate()
  MsgBox "終了します"
End Sub
End Class

'=====[実行結果]=====
'「初期化します」->「テストです」->「終了します」
'の順にメッセージボックスが表示されます
'====================
Errオブジェクト
Errオブジェクトはエラーに関する情報を扱うオブジェクトで、インスタンスを作成せずに、「Err」をそのままオブジェクトとして使用できます。
VBScriptのエラーコードはエラーコードと定数を参照してください。

[メソッド]
  • Clearメソッド
  • Errオブジェクトをクリアします。

    書式 Err.Clear
    以下のいずれかのステートメントが実行されると、自動的にこのメソッドが呼び出されます。
    • On Error Resume Next
    • Exit Sub
    • Exit Function

  • Raiseメソッド
  • エラーを発生させます。

    書式 Err.Raise(引数1, ... , 引数5)
    ■ 引数1(必須)
    エラー番号を示す0~65535の整数値を指定します。
    ■ 引数2(省略可)
    エラーを発生させたオブジェクトまたはアプリケーションを示す文字列を指定します。
    未指定の場合は、VBScriptのプログラムIDが使用されます。
    ■ 引数3(省略可)
    エラーメッセージを表す文字列を指定します。
    未指定の場合は、引数1の値が使用されます。
    ■ 引数4(省略可)
    エラーに関するヘルプファイルの絶対パスを指定します。
    未指定の場合は、VBScriptのヘルプファイルが使用されます。
    ■ 引数5(省略可)
    引数4内の指定したエラートピックのコンテキスト番号を指定します。
    未指定の場合は、引数1の値が使用されます。

[プロパティ]
  • Descriptionプロパティ
  • エラーを説明する文字列を設定または取得します。

    書式 Err.Description = 文字列
    設定する場合は、"文字列"を指定します。
    値を取得した場合は、エラー発生時のError関数の戻り値が参照されます。

  • HelpContextプロパティ
  • ヘルプファイルのトピックを表すコンテキスト番号を設定・取得します。

    書式 Err.HelpContext = コンテキストID
    設定する場合は、"コンテキストID"を指定します。

  • HelpFileプロパティ
  • ヘルプファイルのパスを設定・取得します。

    書式 Err.HelpFile = パス
    設定する場合は、ヘルプファイルへの"パス"を指定します。

  • Numberプロパティ
  • エラー番号を設定・取得します。

    書式 Err.Number = エラー番号
    設定する場合は、"エラー番号"を指定します。

  • Sourceプロパティ
  • エラーを発生させたオブジェクトまたはアプリケーション名を設定・取得します。

    書式 Err.Source = 文字列
    設定する場合は、オブジェクトまたはアプリケーション名を表す"文字列"を指定します。

(例)
On Error Resume Next
'エラーを発生させますが、
'処理は継続されます
Err.Raise 5
MsgBox Err.Description
On Error Goto 0
RegExpオブジェクト
正規表現を扱うためのオブジェクトです。
RegExpのインスタンスを作成してから操作を行います。
インスタンスは宣言した変数に「Set 変数 = New RegExp」という形で作成します。
以下、変数に代入したRegExpインスタンスを"オブジェクト"と表現します。

[メソッド]
  • Executeメソッド
  • 指定した文字列を設定された正規表現で検索します。

    書式 "オブジェクト".Execute(文字列)
    正規表現は、"オブジェクト"のPatternプロパティとして設定しておきます。
    "文字列"には検索対象の文字列を指定します。
    "文字列"内でマッチした文字列は、Matchesコレクションとして返します。
    マッチする文字列が見つからない場合は、空のMatchesコレクションを返します。

  • Replaceメソッド
  • 指定した文字列を設定された正規表現で検索し、マッチした文字列を置換します。

    書式 "オブジェクト".Replace(文字列1,文字列2)
    正規表現は、"オブジェクト"のPatternプロパティとして設定しておきます。
    "文字列1"には検索対象の文字列を指定します。
    "文字列2"には置換する文字列を指定します。
    "文字列1"中のマッチした文字列が"文字列2"で置き換えられます。
    置換できた場合には、"文字列1"の置換前の文字列と"文字列2"で置換後の文字列を返します。
    マッチする文字列がみつからない場合は、"文字列1"を返します。

  • Testメソッド
  • 指定した文字列を設定された正規表現で検索し、マッチする文字列があるかどうかを調べます。

    書式 "オブジェクト".Test(文字列)
    正規表現は、"オブジェクト"のPatternプロパティとして設定しておきます。
    "文字列"には検索対象の文字列を指定します。
    マッチする文字列が見つかった場合は True、見つからなかった場合は False を返します。

[プロパティ]
  • Globalプロパティ
  • 検索文字列全体について正規表現との一致を検索するか、最初の一致だけ検索すれば終了するかを設定します。

    書式 "オブジェクト".Global = 真偽値
    True を指定すると、検索文字列全体について正規表現と一致するかどうかを検索します。
    False を指定すると、検索文字列から最初の一致が見つかった時点で検索を終了します。

  • IgnoreCaseプロパティ
  • 検索時に大文字と小文字を区別するかどうかを設定します。

    書式 "オブジェクト".IgnoreCase = 真偽値
    True を指定すると、大文字と小文字を区別します。
    False を指定すると、大文字と小文字を区別しません。

  • Patternプロパティ
  • 正規表現を設定します。
    設定値を参照することもできます。

    書式 "オブジェクト".Pattern = 正規表現

    "正規表現"は以下の表記を使って表現します。
    表記 説明
    \ 正規表現の表記用文字を単なる文字として扱う場合は、改行文字などの特殊文字の前に付けるエスケープ文字です。
    (例)
    \n:改行文字
    \(:左括弧
    \):右括弧
    \\:\記号
    ^ 文字列の先頭とマッチします。
    (例)
    ^boo:文字列の先頭に"boo"があればマッチします。
    $ 文字列の終端とマッチします。
    (例)
    ook$:文字列の終端にook"があればマッチします。
    * 直前の文字と0回以上マッチします。
    (例)
    ab*:"a"または"ab~b"にマッチします。
    + 直前の文字と1回以上マッチします。
    (例)
    .+:任意の文字に1回以上一致します。
    ? 直前の文字と0回または1回マッチします。
    (例)
    ab?:"a"または"ab"にマッチします。
    . 改行文字以外の任意の文字とマッチします。
    (例)
    .+:任意の文字に1回以上一致します。
    (正規表現) 正規表現の一部を1つのグループとしてまとめる時に ( ) を使います。
    ( ) で囲まれた正規表現とマッチした文字はグループ化されている順に、Matches[0]、... Matches[n]に格納されますので、後から参照することができます。
    (例)
    (b.+k):"b"で始まり"k"で終わる文字列にマッチします。
    a|b aまたはbのいずれかにマッチします。
    a、bには正規表現を指定します。
    (例)
    x|y:"x"または"y"にマッチします。
    {n} nには"0"以上の整数を指定します。
    直前の文字とn回マッチします。
    (例)
    b{2}:"bb"にマッチします。
    {n,} nには"0"以上の整数を指定します。
    直前の文字と少なくともn回マッチします。
    (例)
    b{2,}:"bb"、"bb~b"にマッチします。
    {n,m} n,mには"0"以上の整数を指定します。
    直前の文字とn~m回マッチします。
    (例)
    b{2,4}:"bb"、"bbb"、"bbbb"にマッチします。
    [文字セット] [ ]で囲まれた文字のいずれかとマッチします。
    (例)
    [xyz]:"x"、"y"、"z"のいずれかにマッチします。
    [^文字セット] [ ]で囲まれた文字にはない任意の文字とマッチします。
    (例)
    [^xyz]:"x"、"y"、"z"以外にマッチします。
    [文字1-文字2] "文字1"から"文字2"の範囲に含まれる文字にマッチします。
    (例)
    [a-z]:"a"~"z"のいずれかにマッチします。
    [^文字1-文字2] "文字1"から"文字2"の範囲に含まれない文字にマッチします。
    (例)
    [^p-r]:"p"~"r"以外にマッチします。
    \b 単語の境界(半角スペースやタブなど)にマッチします。
    (例)
    in\b:"in a ring"の"in "にマッチします。
    \B 単語の境界ではない部分とマッチします。
    (例)
    in\B:"in a ring"の"ing"にマッチします。
    \d 数字とマッチします。
    「0-9]と等価です。
    \D 数字以外とマッチします。
    [^0-9]と等価です。
    \f フォームフィードとマッチします。
    \n 改行文字とマッチします。
    \r キャリッジリターンとマッチします。
    \s 半角スペース、タブ、フォームフィードなどの任意の空白文字とマッチします。
    \S 半角スペース、タブ、フォームフィードなどの任意の空白文字ではない文字とマッチします。
    \t タブ文字とマッチします。
    \v 垂直タブ文字とマッチします。
    \w 単語に使用される任意の文字とマッチします。
    [A-Za-z0-9_]と等価です。
    \W 単語に使用される文字以外とマッチします。
    [^A-Za-z0-9_]と等価です。
    \整数 正の整数を指定します。
    既にマッチして記憶されている部分とマッチします。
    \8進数 8進数をエスケープします。
    \x16進数 16進数をエスケープします。
    「\x」に続けて16進数を記述します。

(例)
'RegExpのインスタンスの生成
Dim ObjReg
Set ObjReg = new RegExp
'"a"~"d"にマッチする正規表現をセット
ObjReg.Pattern = "[a-d]"
'その他プロパティ設定
ObjReg.IgnoreCase = True
ObjReg.Global = True
'マッチ結果受取変数宣言
Dim RetMatches
'検索実行
Set RetMatches = ObjReg.Execute("This is a pen.")
Matchオブジェクト
正規表現にマッチした文字列に関する情報を格納したオブジェクトで、読み取り専用となります。
Matchesコレクションに含まれる1つのオブジェクトを表しますので、インスタンスを作成する必要はありません。
以下、Matchオブジェクトを"オブジェクト"と表現します。

[プロパティ]
  • FirstIndexプロパティ
  • 検索対象文字列内で正規表現に一番最初にマッチした文字の位置を返します。

    書式 "オブジェクト".FirstIndex
    検索対象文字列の先頭文字を"0"番目として、マッチした文字の位置を返します。

  • Lengthプロパティ
  • 検索対象文字列内で正規表現にマッチした文字列の長さを返します。

    書式 "オブジェクト".Length

  • Valueプロパティ
  • 検索対象文字列内で正規表現にマッチした文字列を返します。

    書式 "オブジェクト".Value

(例)
'RegExpのインスタンスの生成
Dim ObjReg
Set ObjReg = new RegExp
'"a"~"d"にマッチする正規表現をセット
ObjReg.Pattern = "[a-d]"
'その他プロパティ設定
ObjReg.IgnoreCase = True
ObjReg.Global = True
'マッチ結果受取変数宣言
Dim RetMatches, Match
'検索実行
Set RetMatches = ObjReg.Execute("This is a pen.")
'マッチした結果からMatchオブジェクトを1つずつ取り出します
For Each Match in RetMatches
  MsgBox "位置:" & Match.FirstIndex & " 文字列:" & Match.Value
Next
Matchesコレクション
正規表現にマッチした文字列に関する情報を格納したMatchオブジェクトの集まりです。
通常、Matchesコレクションから1つずMatchオブジェクトを取り出しながら処理します。
SubMatchesコレクション
正規表現中の ( ) で囲んだ表記にマッチした文字列を格納したオブジェクトの集まりです。
インスタンスを生成する必要はありません。
SubMatches(0)、...、Submatches(n)という形で各マッチ文字列にアクセスできます。