如何在 VBA Excel 中使用 RapidAPI(WhoIs 域名)
Posted
技术标签:
【中文标题】如何在 VBA Excel 中使用 RapidAPI(WhoIs 域名)【英文标题】:How to use RapidAPI with VBA Excel (WhoIs Domain Name) 【发布时间】:2022-01-21 16:20:30 【问题描述】:我找到了一些关于同一主题的其他帖子,但没有明确的信息或没有回答,所以如果有人能帮助我解决这个问题,我将不胜感激。
我在 Excel 中的 VBA 代码上使用 RapidAPI,但无法使其正常工作,这让我很头疼。我正在尝试从 A 列中列出的域名中检索 WhoIs 信息,API 答案应该在 B 列中。谁能给我指点一下?
来源:https://rapidapi.com/jsonwhois.com/api/json-whois-screenshots-google-social-data/
Function GetWhoIs(DomainName As String)
Dim json, Url, params As String
Dim jsonObject, objHTTP, strResult, objetoJson As Object
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
Url = "https://jsonwhois.p.rapidapi.com/api/v1/whois/"
objHTTP.Open "GET", Url, False
objHTTP.setRequestHeader "authorization", "Token token=xxxxxxxxxxxxxxxxxx"
objHTTP.setRequestHeader "x-rapidapi-host", "jsonwhois.p.rapidapi.com"
objHTTP.setRequestHeader "x-rapidapi-key", "xxxxxxxxxxxxxxxxxxxxxxxx"
params = "domain=" + DomainName
objHTTP.Send (params)
strResult = objHTTP.responseText
json = strResult
Set objetoJson = JsonConverter.ParseJson(json)
GetWhoIs objetoJson
End Function
Sub combine()
Dim a As String
For Each a In Range("A2:A50")
If Not IsEmpty(a.Value) Then
Range("B" & Rows.Count).End(xlUp).Offset(1, 0) = GetWhoIs(a.Value)
Next a
End Sub
【问题讨论】:
你得到什么错误? 我在函数内部的“GetWhoIs objetoJson”上得到“ByRef 参数类型不匹配”。但实际上我不知道如何解决它,我已经尝试了很多东西,但没有任何结果。 你在哪一行得到这个错误?总是有助于提供有关您在代码中遇到的特定问题的详细信息。在 VBA 中仅供参考,如果您有一个以逗号分隔的变量列表,最后带有... As XXX
- 只有最后一个变量获得该 XXX 类型:其他所有变量都是 Variant。
GetWhoIs objetoJson
正在调用函数递归地传递对象作为参数,而函数需要一个字符串。您可能想要删除该行并将上面的行更改为Set GetWhoIs= JsonConverter.ParseJson(json)
。但是,您不能将对象写入需要从中提取数据的工作表。为此,您需要了解 Jason 字符串的结构。
【参考方案1】:
您正在使用 GET,但也在请求正文中发送数据 - 这通常仅在 POST 操作中完成。对于 GET 来说,应该确实在 URL 查询字符串中。
Url = "https://jsonwhois.p.rapidapi.com/api/v1/social?domain=" & DomainName
并从.Send
行中删除(params)
–
【讨论】:
我听从了您的建议,但仍然无法正常工作。我在函数内部的“GetWhoIs objetoJson”上得到“ByRef 参数类型不匹配”。有什么想法吗?以上是关于如何在 VBA Excel 中使用 RapidAPI(WhoIs 域名)的主要内容,如果未能解决你的问题,请参考以下文章