首页 > 解决方案 > 从 Node.js 调用 VBScript

问题描述

为了响应来自客户端的请求,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 错误。

提前致谢

标签: javascriptnode.jsvbavbscriptactivexobject

解决方案


您的 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"]);

推荐阅读