首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >64位Excel VBA调用JavaScript函数

64位Excel VBA调用JavaScript函数
EN

Stack Overflow用户
提问于 2020-06-03 13:52:56
回答 1查看 1.7K关注 0票数 0

我需要使用一个VBA对象来调用一个JavaScript函数,但是它给我一个“类未注册”的错误。我已经从工具->引用中添加了Microsoft Script Control1.0,我需要调用JavaScript从这个Rest API中获取一个JSON对象来计算Excel Macro中的值。

This post告诉我ScriptControl只适用于32位。我使用的是64位Excel。我也尝试使用这个link中提到的方法,但它不起作用,因为VBA不能识别ActiveXObject

我的Excel VBA代码调用一个简单的JS函数:

代码语言:javascript
复制
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函数的替代方法?还是我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-03 14:36:59

不需要ScriptControl对象:您可以使用XMLHTTP和VBA-JSON。

例如:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62166109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档