为了账号安全,请及时绑定邮箱和手机立即绑定

64 位用于调用脚本函数的 Excel VBA

64 位用于调用脚本函数的 Excel VBA

郎朗坤 2022-09-16 21:35:24
我需要使用VBA脚本控件对象来调用 JavaScript函数,但它给了我一个“类未注册”错误。我从工具>参考中添加了微软脚本控制1.0,我需要调用JavaScript从这个休息API中获取JSON对象,以计算Excel宏中的值。这篇文章告诉我,脚本控件仅适用于 32 位。我正在使用64位 Excel。我还尝试使用此链接中提到的方法,但由于VBA无法识别ActiveX对象,因此它不起作用我的 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 resultEnd Sub我收到一个类未注册错误,用于行 设置 jsObj = 创建对象 (“MSScript控制.脚本控制”) 是否有另一种方法可以从 VBA 调用 JavaScript 函数?还是我错过了什么?
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

不需要脚本控件对象:可以使用 XMLHTTP 和 VBA-JSON。


例如:


Public Sub Tester()


    'Import the "JsonConverter.bas" file from 

    '     https://github.com/VBA-tools/VBA-JSON

    'and add a reference to the Microsoft Scripting Runtime library

    Dim http As Object, JSON As Object, i As Integer, o As Object, k


    Set http = CreateObject("MSXML2.XMLHTTP")

    http.Open "GET", "https://www.alphavantage.co/query?" & _

          "function=CURRENCY_EXCHANGE_RATE&from_currency=USD" & _

          "&to_currency=JPY&apikey=demo", False


    http.Send


    Debug.Print http.responseText

    Debug.Print "-----------------------------------"


    Set JSON = ParseJson(http.responseText)


    Set o = JSON("Realtime Currency Exchange Rate")

    For Each k In o.keys

        Debug.Print k, o(k)

    Next k


End Sub


查看完整回答
反对 回复 2022-09-16
  • 1 回答
  • 0 关注
  • 217 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信