从Node.js调用VBScript

时间:2018-05-30 13:11:06

标签: javascript node.js vba vbscript activexobject

要回答客户端的请求,Node.js需要将图像中的Excel文件中的图表导出到存储库中。 我选择使用VBA宏,因为我不认为我有其他解决方案。 VBA代码工作正常(当我手动调用它)但我希望我可以将它与Node.js事件连接。 VBScript允许我在script.vbs文件中调用VBA宏:

Option Explicit
On Error Resume Next
CallVBA

Sub CallVBA() 

   Dim ApplicationExcel 
   Dim ClasseurExcel 

   Set ApplicationExcel = CreateObject("Excel.Application") 
   Set ClasseurExcel = ApplicationExcel.Workbooks.Open("H:/macrosVBA.xlsm") 

   ApplicationExcel.Visible = False       
   ApplicationExcel.Run "ChartUpload" 
   ApplicationExcel.Quit 

   Set ClasseurExcel = Nothing 
   Set ApplicationExcel = Nothing 

End Sub

我现在的问题是在JavaScript文件中运行VBScript:



var objShell = new ActiveXObject("WScript.shell");
objShell.run('H:/script.vbs');




我收到错误:

ReferenceError: ActiveXObject is not defined

添加win32olewinax并不会改变任何内容,它们似乎不再适用。 我正在寻找您的帮助以获得另一个解决方案或使用ActiveXObject修复我的错误。

提前致谢

1 个答案:

答案 0 :(得分:2)

您的Node.js可能是64位的,而Office / Excel可能是32位的版本。

您需要运行32位VBScript解释器才能访问32位CreateObject("Excel.Application")

const { spawn } = require("child_process");
const bat = spawn("C:\\Windows\\SysWOW64\\wscript.exe", ["H:\\script.vbs"]);