今回はVBScriptの配列の代わりにレコードセットを使用する方法を紹介します。
VBScriptの配列は使いづらい
VBSに限らずVBAなどでも同じですが、配列が使いづらいです。ひとつのデータ型しか定義出来ないし、空かどうか判定も面倒だし、ソートも簡単には出来ないし、値を検索しようにもFilterは部分一致でしか絞り込みが出来ないし…等々で、最近は代わりにレコードセットを使うことが多いです。※特に二次元配列の場合
サンプルコード
以下のコードは、メインの処理で空のレコードセットオブジェクトを生成し、レコードセットのデータ型を定義し、行追加用の関数にレコードセットを渡して行を追加するという一連の処理のサンプルになります。
レコードセットに定義する列名やデータ型、関数の引数を適当に修正してご使用ください。
Option Explicit Dim objRS 'レコードセットオブジェクトを生成します。 Set objRS = CreateObject("ADODB.Recordset") 'レコードセットのフィールドを定義します。 objRS.Fields.Append "Column1",20 '20:BigInt objRS.Fields.Append "Column2",200,50 '200:VarChar(50) objRS.Fields.Append "Column3",200,100 '200:VarChar(100) objRS.Fields.Append "Column4",200,100 '200:VarChar(100) 'レコードセットを開きます。 objRS.Open 'レコードセットへデータを追加する関数を実行します。 Set objRS = AddRecordsetRow(objRS,1,"あいうえお","かきくけこ","さしすせそ") Set objRS = AddRecordsetRow(objRS,2,"たちつてと","なにぬねの","はひふへほ") 'レコードセットを先頭行に移動 objRS.MoveFirst 'レコードセットのデータを表示します。 Do Until objRS.EOF Msgbox objRS("Column1").Value & " " & objRS("Column2").Value & _ " " & objRS("Column3").Value & " " & objRS("Column4").Value 'レコードセットのカレント行を次に移動 objRS.MoveNext Loop 'レコードセットオブジェクトを解放します。 Set objRS = Nothing Function AddRecordsetRow(Rs,Column1Value,Column2Value,Column3Value,Column4Value) '新規行を作成します。 Rs.AddNew '作成した新規行に値をセットします。 Rs("Column1").Value = Column1Value Rs("Column2").Value = Column2Value Rs("Column3").Value = Column3Value Rs("Column4").Value = Column4Value 'レコードセットへの反映を確定します。 Rs.Update '関数の戻り値にレコードセットをセットします。 Set AddRecordsetRow = Rs End Function
それでは今回も読んで頂きありがとうございました。
↓この記事も類似した記事なので参考になるかもしれません。良かったらご一読下さいませ。
【VBScript】レコードセットを関数の戻り値に指定する方法
VBScriptでバッチを作っていて、たまにRecordsetを関数の戻り値に設定したい場合があり、いつもやり方を忘れる...