要回答客户端的请求,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
添加win32ole和winax并不会改变任何内容,它们似乎不再适用。 我正在寻找您的帮助以获得另一个解决方案或使用ActiveXObject修复我的错误。
提前致谢
答案 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"]);