VBAからの利用方法サンプル
これまでの連載で登場したサンプルを含め、解説します。
URLエンコード(関数の利用)
JScriptの組み込み関数を利用する場合は、
js.CodeObject.関数名(引数)
という形で呼び出すだけです。日本語を含んだ引数をURLに付加する場合のURLエンコードについては、以下のようになります。
[リスト7]URLエンコードの利用
Dim str As String, strEnc As String
strEnc = js.CodeObject.encodeURIComponent(str)
配列のソート(メソッドの利用)
JScriptのメソッドを利用する場合は、VBA側からJScriptのオブジェクトを生成して利用します。VBAにないソートをJScriptで行う場合は、以下のようになります。
[リスト8]sortメソッドの利用
'(1)JScriptの配列を用意
Dim ar As Object
Set ar = js.eval("[]")
'(2)JScriptの配列に追加
Dim i As Integer
For i = 1 To Len(Range("b2"))
ar.push Mid(Range("b2"), i, 1)
Next
'(3)JScriptのsortメソッドを実行
CallByName ar, "sort", VbMethod
'(4)ソートされたJScript配列を取り出す
Dim sortedStr As String
sortedStr = ""
Dim tempStr As Variant
For Each tempStr In ar
sortedStr = sortedStr & tempStr
Next
MsgBox sortedStr
(1)ではまずVBAのオブジェクト変数arを宣言します。evalは文字列を評価して実行する関数で、「ar = []」と空の配列を生成していることになります。
(2)では配列arのpushメソッドを使って、配列に要素を追加します。サイズは動的に増加します。
(3)では配列arのソートを実行するのですが、sortはVBAの予約語であるため、CallByName関数を用います。
(4)ではソート済みの配列arから「For Each バリアント型変数 In 配列」という形で要素を1つずつ取り出します。