使用JavaScript

时间:2016-09-17 12:26:03

标签: javascript excel excel-vba vba

我最近在工作中开始了一个新的项目,我想用JavaScript工作一下。这是我与JS的第一次接触,我已经在努力寻找一个参考资料。

我正在尝试使用JS打开工作簿(Excel),但它是通过密码保护的。我不知道传递"Password:=***"等可选对象的正确语法是什么。这就是我所拥有的:

function test() {
    var Excel = new ActiveXObject("Excel.Application");
    var Location = "W:/MyFolder/MyFile.xlsm"
    Excel.Visible = true;
    var obj = Excel.Workbooks.Open(Location:="****");
}

它运行正常,它按预期打开文件但是我无法添加密码变量 - 例如:

var obj = Excel.Workbooks.Open(Location, Password:="****");

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

问题是似乎没有一种方法可以省略JScriptActiveX - 函数的可选参数。只需省略它们,如:

var obj = Excel.Workbooks.Open(Location, , , , "password");

JScript中的语法错误。

使用undefined似乎导致0中的ActiveX - 函数。所以

var obj = Excel.Workbooks.Open(Location, undefined, undefined, undefined, "password");

不起作用,因为第四个参数Format不能是0。根据{{​​3}}

,它必须是16

所以唯一的方法似乎是省略但是为他们移交可能的值:

var obj = Excel.Workbooks.Open(Location, 0, false, 1, "password");

会奏效。

编辑:

在这种特殊情况下,由于所有可选参数都是System.Object s,因此可以为我提供可选参数的null

var obj = Excel.Workbooks.Open(Location, null, null, null, "password");

答案 1 :(得分:0)

结帐the Workbook.Open MSDN page。基本上,密码是第5个参数。

var obj = Excel.Workbooks.Open(Location, missing, missing, missing, "****");

您可以将第2个参数指定为缺少/ null。不确定如何在javascript中执行此操作;在PowerShell中$missing = [System.Reflection.Missing]::Value和c#中它Type.Missing