Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 自动从多个excel网页收集数据_Vba_Excel_Automation - Fatal编程技术网

Vba 自动从多个excel网页收集数据

Vba 自动从多个excel网页收集数据,vba,excel,automation,Vba,Excel,Automation,我一直在尝试自动化一项任务,但最近遇到了一个问题。部分任务是将网站上的两条信息复制并粘贴到excel文档中 以下是网页外观的一些示例: 我希望收集的数据是“当前描述”和“CVSS v3.0基本分数”的值 总是有多个链接,我必须采取的数据,但他们都非常相似,唯一的区别是什么CVE-***-**** 目前,我有它,以便excel将网页的实际链接放入一个列表中 有没有一种方法可以让我创建一个宏,自动浏览链接列表,从网站获取“当前描述”和“CVSS v3.0基本分数”数据,并将它们放入excel的

我一直在尝试自动化一项任务,但最近遇到了一个问题。部分任务是将网站上的两条信息复制并粘贴到excel文档中

以下是网页外观的一些示例:

我希望收集的数据是“当前描述”和“CVSS v3.0基本分数”的值

总是有多个链接,我必须采取的数据,但他们都非常相似,唯一的区别是什么CVE-***-****

目前,我有它,以便excel将网页的实际链接放入一个列表中

有没有一种方法可以让我创建一个宏,自动浏览链接列表,从网站获取“当前描述”和“CVSS v3.0基本分数”数据,并将它们放入excel的单元格中


谢谢您的帮助/建议/提示。

这就是我的方法。显然,您可以调整处理丢失信息的方式。我只是使用提供的CVE给出一个示例。你真的应该提供你的努力,因为我不知道你在用什么方法

Option Explicit
Public Sub GetInfo()
    Const BASE_URL As String = "https://nvd.nist.gov/vuln/detail/"
    Dim i As Long, CVES(), tempArr()
    CVES = Array("CVE-2018-0253", "CVE-2018-0300", "CVE-2018-0256")
    For i = LBound(CVES) To UBound(CVES)
        tempArr = GetDescriptionAndScore(BASE_URL & CVES(i))
        Debug.Print "Desc: " & tempArr(0)
        Debug.Print "Score: " & tempArr(1)
        Erase tempArr
    Next i
End Sub

Public Function GetDescriptionAndScore(ByVal url As String) As Variant
    Dim html As New HTMLDocument, arr(1), sResponse As String
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", url, False
        .send
        sResponse = StrConv(.responseBody, vbUnicode)
    End With

    sResponse = Mid$(sResponse, InStr(1, sResponse, "<!DOCTYPE "))
    With html
        .body.innerHTML = sResponse
        arr(0) = .querySelector("[data-testid=vuln-description]").innerText
        If InStr(1, sResponse, "This vulnerability is currently awaiting analysis") > 0 Then
            arr(1) = "Not available"
        Else
            arr(1) = .querySelector("[data-testid=vuln-cvssv3-base-score]").innerText
        End If
    End With
    GetDescriptionAndScore = arr
End Function
选项显式
公共子GetInfo()
Const BASE_URL作为字符串=”https://nvd.nist.gov/vuln/detail/"
Dim i As Long,CVES(),tempArr()
CVES=阵列(“CVE-2018-0253”、“CVE-2018-0300”、“CVE-2018-0256”)
对于i=LBound(CVES)至UBound(CVES)
tempArr=getDescription和Score(基本URL和CVES(i))
调试。打印“Desc:”和tempArr(0)
调试。打印“分数:&tempArr(1)
消除节拍
接下来我
端接头
公共函数GetDescriptionAndScore(ByVal url作为字符串)作为变量
将html变暗为新的HTMLDocument,arr(1),响应为字符串
使用CreateObject(“MSXML2.XMLHTTP”)
.打开“获取”,url,False
.发送
sResponse=StrConv(.responseBody,vbUnicode)
以

sResponse=Mid$(sResponse,InStr(1,sResponse),“请在代码标签之间包含您的代码和问题。您尝试过这个吗?”?