2016-09-17 303 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

相關問題