Recordsetオブジェクトをソート可能な配列変数として使う

VBScriptで「自由にソートできる配列変数」が使えないかと調べていたら、ADODB.Recordsetオブジェクトがその目的に使えることがわかった。検索エンジンにひっかかるようにここに記しておく。
【参考ページ】
http://www.roubaixinteractive.com/PlayGround/FSO/Sort_Folder_Contents.asp
単純に「ソートできる文字列型の配列変数」の代わりになるものを作りたければ、ADODB.Recordsetオブジェクトを生成し、文字列型の列を1つ追加する。下記の例では最大半角200文字を格納できる「Field1」という名称の列を1つ追加している。もちろん複数の列を追加することもできるし、文字列型以外の型の列も追加できる。
新しい値を追加するにはRecordsetオブジェクトのAddNewメソッドを使い、データベースでいえば行を追加する感覚になる。最後にUpdateメソッドを呼び出すと変更が反映される。
ソートするにはRecordsetオブジェクトのSortメソッドに、SQL文の「ORDER BY」以降の記述をそのまま引数としてわたせばよい。下記の例では「Field1 DESC」となっており、Field1列の降順でソートされる。昇順なら「ASC」、複数列を指定するなら「Field1 DESC, Fields2 ASC」などとなる。
ソートした結果を取り出すのはデータベースの行操作とまったく同じで、MoveFirstメソッドを呼び出してから、繰り返し文でEOF(データの終わり)に突き当たるまでMoveNextを呼び出せばよい。
Dim oRs
Const adInteger = 3
Const adDate = 7
Const adVarChar = 200
Set oRs = CreateObject(“ADODB.Recordset”)
With oRs.Fields
.Append “Field1”, adVarChar, 200
End With
oRs.AddNew
oRs.Fields(“Field1”) = “AAAA”
oRs.AddNew
oRs.Fields(“Field1”) = “CCCC”
oRs.AddNew
oRs.Fields(“Field1”) = “BBBB”
oRs.Update
oRs.Sort = “Field1 ASC”
oRs.MoveFirst
Do Until oRs.EOF
‘ 何かの処理をする
oRs.MoveNext
Loop