сохранить как *.wsf и запускать.
<job id='vbs'>
<script language='VBScript'>
Sub VbsEval(expr): PutResult(Eval(expr)): End Sub
</script>
<script language='JScript'>
var VB = {};
var VB = { func: function(func){ return VBS(func);}}
function VBS(func) {
PutResult = function(X) {EvalResult=X;}
GetArgs = function(i) {return _fArgs[i];}
this.f = new Function(
'_fArgs=arguments;'+
'var cnt = _fArgs.length, args=new Array(cnt);'+
'for (var i=cnt; --i>=0;) args[i]="GetArgs("+ i +")";'+
'VbsEval("' +func+ '("+args+")");'+
'var retVal=EvalResult;'+
'_fArgs=null; EvalResult=null;'+
'return retVal;'
);
return f;
}
// здесь по-всякому их обозвать...
VB.StrReverse = VBS("StrReverse");
VB.Int = VBS("Int");
var InputBox = VBS('InputBox');
var reverse = VBS("StrReverse");
var x=InputBox("сюда не целое x", "вызвать VB InputBox из JScript");
VBS("MsgBox")("x = "+x+'\n'+reverse(x)+'\n'+VB.Int(x), 0,"VBS" ); //а можно и сразу прямо так, если функция в скрипте есть
</script>
</job>
но требуется -- объект лежит в библиотеке vbs.wsc (чтоб подтянуть как activX к любому js) и чтоб не заряжая его заранее всеми возможными vba функциями можно было достать их из объекта так: VBA.Int(x);, а не так как теперь: VBA.func("Int")(x);
вот тут мой мозг закончился...