我最近在工作中开始了一个新的项目,我想用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:="****");
有什么想法吗?
答案 0 :(得分:1)
问题是似乎没有一种方法可以省略JScript
和ActiveX
- 函数的可选参数。只需省略它们,如:
var obj = Excel.Workbooks.Open(Location, , , , "password");
是JScript
中的语法错误。
使用undefined
似乎导致0
中的ActiveX
- 函数。所以
var obj = Excel.Workbooks.Open(Location, undefined, undefined, undefined, "password");
不起作用,因为第四个参数Format
不能是0
。根据{{3}}
1
到6
所以唯一的方法似乎是不省略但是为他们移交可能的值:
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