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で行う場合は、以下のようになります。

図3.sortメソッドの利用

[リスト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つずつ取り出します。