用JavaScript打开受密码保护的Excel工作簿

我最近在工作中开始了一个新的项目,我想用JavaScript来做一些工作。 这是我与JS的第一次接触,我已经在挣扎着一个参考。

我试图打开一个工作簿(Excel)使用JS,但它的密码保护。 我不知道什么是适当的语法来传递可选对象,如"Password:=***" 。 这是我有什么:

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

它工作正常,它按预期打开文件,但我不能添encryption码variables – 例如:

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

有任何想法吗?

问题是似乎没有一种方法可以用JScriptActiveX functions省略可选的参数。 简单地忽略它们,如:

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

JScript一个语法错误。

使用undefined似乎导致在ActiveX函数中为0 。 所以

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

将无法工作,因为第四个参数的Format不能为0 。 打开方法(Excel)必须是16

所以唯一的办法似乎是不要忽略,而是为他们交出可能的价值:

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

将工作。


编辑:

在这种特殊情况下,因为所有可选参数都是System.Object ,所以为可选parameter passingnull适用于我:

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

检出工作簿 。 打开MSDN页面 。 基本上,密码是第五个参数。

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

您可以指定第2-4个参数为missing / null。 不知道如何在JavaScript中做到这一点; 在PowerShell中$missing = [System.Reflection.Missing]::Value和在C#中它是Type.Missing