javascript - 从 Node.js 调用 VBScript

标签 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 错误。

提前致谢

最佳答案

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

关于javascript - 从 Node.js 调用 VBScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50605619/

相关文章:

javascript - 无需裁剪的响应式全屏图像

node.js - Node-Red 中的最佳实践是否能够源源不断?

arrays - Excel VBA - 如何在保留旧数组值的同时向二维变量数组添加一行?

javascript - nodejs无法用momentjs解析日期

javascript - 使用 jQuery 将图片从一个 div 添加到另一个

javascript - FCKEditor:访问内容区域

mysql - date_format 与 sequelize mysql

node.js - Node.js 中的并行执行

excel - 使用 VBA 检查 Excel 中的工作表

excel - 如何在 Excel 中对 "high"字符进行 HTML 编码或音译?