从Node.js调用VBScript

问题描述 投票:0回答:1

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

提前感谢

javascript node.js vba vbscript activexobject
1个回答
1
投票

您的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"]);
© www.soinside.com 2019 - 2024. All rights reserved.