複数のディクショナリが欲しいときに便利なので検証内容を残す
配列にディクショナリを生成する
dicsArray.vbs
Dim dicsArray(2)
set dicsArray(0) = CreateObject("Scripting.Dictionary")
set dicsArray(1) = CreateObject("Scripting.Dictionary")
set dicsArray(2) = CreateObject("Scripting.Dictionary")
dicArrays(0).add "dog","ポチ"
dicArrays(1).add "cat","レオ"
dicArrays(3).add "rabbit","キナコ"
これを応用すると関数で複数のディクショナリを返すことができる
dicsArrayFunc.vbs
Public Function getDictionaries(num, infoArray)
Dim dicArrays()
Dim cnt, i
'指定数の配列要素を生成する
ReDim dicArrays(num)
'指定数のディクショナリを生成する
for cnt = 0 to num
set dicArrays(cnt) = CreateObject("Scripting.Dictionary")
Next
'ディクショナリにキーを追加する
For i = 0 to ubound(infoArray)
For cnt = 0 to num
dicArrays(cnt).add infoArray(i,0),infoArray(i,1)
Next
Next
'配列なのでSetは付けない
getDictionaries = dicArrays
End Function
Dim dicArrays
Dim dic1,dic2,dic3,dic4
Dim cnt
Dim infoArray(2,1)
'ディクショナリに展開する情報を生成する
infoArray(0,0) = "dog"
infoArray(0,1) = "ポチ"
infoArray(1,0) = "cat"
infoArray(1,1) = "レオ"
infoArray(2,0) = "rabbit"
infoArray(2,1) = "キナコ"
dicArrays = getDictionaries(3,infoArray)
'実際に使うときは普通のオブジェクト変数の方が使いやすいかも
Set dic1 = dicArrays(0)
Set dic2 = dicArrays(1)
Set dic3 = dicArrays(2)
Set dic4 = dicArrays(3)
'検証用
For cnt = 0 to 3
msgbox Join(dicArrays(cnt).keys,vbCrLf) & vbCrLf &Join(dicArrays(cnt).items,vbCrLf)
Next
VBSだと処理に時間がかかるので何度も同じ関数を呼び出すより時短になると思う