2016-09-17 306 views
0

我最近在工作中开始了一个新项目,我想用JavaScript来工作一下。这是我与JS的第一次接触,我已经在挣扎着一个参考。用JavaScript打开受密码保护的Excel工作簿

我想打开一个工作簿(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:="****"); 
} 

它工作正常,它会打开文件但预期我不能添加密码变量 - 例如:

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

任何想法?

+0

的[在命名参数可能的复制javascript](http://stackoverflow.com/questions/11796093/named-parameters-in-javascript) – GSerg

回答

0

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

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

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

+0

谢谢你的回答。我与msdn.open familliar,问题是在JS语法 - 我不能在JS应用它:)“失踪”参数是有道理的,虽然它不工作(既不是“空”)...... – Doctore

1

的问题是,似乎并没有被省略可选参数与JScriptActiveX -functions的方法。简单地省略它们,如:

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

JScript中的语法错误。

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

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

不会起作用,因为第四个参数Format不能0。它必须根据Workbooks.Open Method (Excel)

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"); 
+0

神奇...那工作:) – Doctore

相关问题