【发布时间】:2020-09-21 18:06:04
【问题描述】:
我需要使用 VBA ScriptControl 对象来调用 JavaScript 函数,但它给了我“类未注册”错误。 我从 Tools->References 添加了 Microsoft Script Control 1.0 我需要调用 JavaScript 以从此 Rest API 获取 JSON 对象,以计算 Excel 宏中的值。
This post 告诉我 ScriptControl 仅用于 32 位。我正在使用 64 位 Excel。 我也尝试使用link 中提到的方法,但由于 VBA 无法识别 ActiveXObject
,因此它不起作用我的Excel VBA代码调用一个简单的JS函数:
Private Sub CommandButton1_Click()
Dim jsObj As MSScriptControl.ScriptControl, result As Integer
Set jsObj = CreateObject("MSScriptControl.ScriptControl")
jsObj.Language = "JScript"
With jsObj
.AddCode ("function prod1(a,b){return a*b;}")
result = .Run("prod1", 2, 3)
End With
MsgBox result
End Sub
我收到 Set jsObj = CreateObject("MSScriptControl.ScriptControl") 行的类未注册错误 是否有从 VBA 调用 JavaScript 函数的替代方法?还是我错过了什么?
【问题讨论】:
-
您不能使用 XMLHTTP 调用该 API?您似乎不需要为此设置脚本控件。
-
当 API 以 XML 形式返回值时,可以使用 XMLHTTP。此 API 以 JSON 格式返回它
-
使用 xmlHTTP 获取 JSON 没有问题 - 这里有很多关于 SO 的现有问题,涵盖(并解析响应)stackoverflow.com/search?q=%5Bvba%5D+json
标签: javascript excel vba 32bit-64bit msscriptcontrol