|
■No4066 (ささきちひろ さん) に返信
> ary = Array("あああああ","いいいいい")
> call objShellWindows(i).document.parentWindow.execscript("test1('" & ary & "')","VBScript") ''← 型が一致しません
「配列」を文字列連結することはできませんので、エラーになるでしょうね。
書くとすれば、
.execscript("test3 Array(1234, 5678)", "VBScript")
あるいは、
.execscript("Call test3(Array(1234, 5678))", "VBScript")
のような形となるでしょう。
# VBS では、戻り値を受け取らないメソッド呼び出しでは、括弧を付けない点に注意。
それに、「VBScript の配列」と「JScript の配列」は別物です。
もし、VBScript の配列を、JScript 側で扱うのであれば、
function test3(arrayOfVBS){
var vbArray = new VBArray(arrayOfVBS);
var jsArray = vbArray.toArray();
test1( jsArray );
}
のように、VBArray オブジェクトから Array オブジェクトへの変換が必要です。
とはいえ、今回の場合に関して言えば、わざわざ「配列オブジェクト」を渡すのではなく、
.execscript("Call test4(1234, 5678)", "VBScript")
.execscript("Call test5(""aa"", ""bb"")", "VBScript")
のように、そのまま引数と渡す形の方が楽かと。
function test4(){
var jsArray = new Array(arguments[0], arguments[1]);
test1( jsArray );
}
function test5(a, b){
test1( [a, b] );
}
|