从VBA

时间:2017-09-14 09:54:03

标签: excel vba https

我尝试从此休息服务获取数据。我是一个浏览器,它工作正常。现在我尝试在VBA中执行此操作以在Excel中显示数据

https://energidataservice.dk/api/action/datastore_search?resource_id=ec797392-7ba5-4c3a-b021-8ae302ac295a&limit=5

我认为这与https和TSL有关。当我在C#中对此进行编码并添加此行时,它可以正常工作。我只是不知道如何在VBA中这样做

'ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 - object required

Dim reader As New WinHttpRequest
Dim json As New JSONParser
Dim ws As Worksheet: Set ws = ActiveSheet

Dim url As String
url = ws.[EDS_URL]

' reader.Option(9) = 2720 - invalid procedure call
reader.Open "GET", url, False

reader.Send ' automation error

没有TSL部分,我在最后一行得到了自动化错误

2 个答案:

答案 0 :(得分:2)

试试这个,如果有帮助则接受解决方案

Sub GetData()
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
url = "https://www.energidataservice.dk/api/action/datastore_search?resource_id=ec797392-7ba5-4c3a-b021-8ae302ac295a&limit=5"
objHTTP.Open "GET", url, False
objHTTP.setRequestHeader "Content-Type", "text/json"
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405"
objHTTP.send ("")


Debug.Print objHTTP.Status
If objHTTP.Status = "200" Then
    MsgBox (objHTTP.responseText)
End If

End Sub

enter image description here

答案 1 :(得分:0)

您可以使用C#代码。将其编译为类库,然后公开给COM。
现在您可以将创建的dll加载到VBA引用中。

可以将它用作任何COM服务器。