javascript - 从 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
添加win32ole和winax并没有改变任何东西,它们似乎不再起作用了。我正在寻求您的帮助以获得其他解决方案或修复我的 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"]);
推荐阅读
- rancher - 如何使用rancher api保存主机注册URL
- android - 在内容背景上创建布局
- entity-framework-core - EF Core - 多个拥有的类型映射问题
- angular - 剥离父组件标签
- c++ - 如何将现有对象 push_back 到共享指针向量?
- html - 如何使用 flex css 获得最小宽度
- typescript - 反转打字稿工厂绑定返回联合类型?
- datepicker - jquery DatePicker 在特定日期
- r - R中的荟萃分析
- javascript - 使用 mongoose 使用 Jest 进行测试:“有一些异步操作在您的测试中没有停止”