简体   繁体   English

64 位 Excel VBA 调用 JavaScript ZC1C425268E68389411AB507ZA809Z

[英]64 bit Excel VBA to call a JavaScript function

I need to use a VBA ScriptControl object to call a JavaScript function, but it gave me a "Class Not Registered" error. I need to use a VBA ScriptControl object to call a JavaScript function, but it gave me a "Class Not Registered" error. I have added Microsoft Script Control 1.0 from Tools->References I need to call JavaScript to get a JSON object from this Rest API to calculate values in an Excel Macro. I have added Microsoft Script Control 1.0 from Tools->References I need to call JavaScript to get a JSON object from this Rest API to calculate values in an Excel Macro.

This post told me that ScriptControl is for use in 32 bit only. 这篇文章告诉我 ScriptControl 仅用于 32 位。 I am using 64 bit Excel.我正在使用 64 位 Excel。 I also tried using the method mentioned in this link but it didn't work since VBA doesn't recognise the ActiveXObject我也尝试使用此链接中提到的方法,但它不起作用,因为 VBA 无法识别 ActiveXObject

My Excel VBA code to call a simple JS function:我的Excel VBA代码调用一个简单的JS function:

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

I am getting a class not registered error for the line Set jsObj = CreateObject("MSScriptControl.ScriptControl") Is there an alternate way to call a JavaScript function from VBA? I am getting a class not registered error for the line Set jsObj = CreateObject("MSScriptControl.ScriptControl") Is there an alternate way to call a JavaScript function from VBA? Or am I missing something?还是我错过了什么?

There's no need for a ScriptControl object: you can use XMLHTTP and VBA-JSON.不需要 ScriptControl object:您可以使用 XMLHTTP 和 VBA-JSON。

For example:例如:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM