如何在 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 域名)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VBA 在 Excel 中求和/合并相似的行?

请教,在Excel 中使用VBA查找问题。

如何在excel中使用VBA调用其它外部程序

如何在 VBA 中使用 Excel 的内置模函数 (MOD)?

如何使用excel vba,对outlook进行操作?

如何在excel的vba中进行繁简转换