首页 > 解决方案 > 无法从函数返回多个结果以便在子程序中打印它们

问题描述

我试图从一个函数返回多个结果,以便在 sub.xml 中打印它们GetInfo()。当我让函数返回一个项目并在 内打印它GetInfo()时,它可以完美地工作,但如果返回多个结果,我会卡住,就像在getHTTP = elemText, elemlink和 then中一样oText, oLink = getHTTP(Url)

我试过了:

Function getHTTP(ByVal link$) As String
    Dim oHttp As New XMLHTTP60, Html As New HTMLDocument, post As Object

    With oHttp
        .Open "GET", link, False
        .send
        Html.body.innerHTML = .responseText
        Set post = Html.querySelector(".summary .question-hyperlink")
        elemText = post.innerText

        'The following line is commented for now. I would like to print it as well within the sub 
        'elemlink = post.getAttribute("href")

        getHTTP = elemText
    End With
End Function

Sub GetInfo()
    Const Url$ = "https://stackoverflow.com/questions/tagged/web-scraping"
    Dim oText$

    oText = getHTTP(Url)
    Debug.Print oText
End Sub

如何打印应由功能处理的帖子的link和 ,保持现有设计完好无损?titleGetInfo()getHTTP()

标签: excelvbaweb-scraping

解决方案


你可以这样做:

Function getHTTP(ByVal link$) 
    Dim oHttp As New XMLHTTP60, Html As New HTMLDocument, post As Object

    With oHttp
        .Open "GET", link, False
        .send
        Html.body.innerHTML = .responseText
        Set post = Html.querySelector(".summary .question-hyperlink")
        elemText = post.innerText
        elemlink = post.getAttribute("href")

        getHTTP = Array(elemText, elemlink)
    End With
End Function

Sub GetInfo()
    Const Url$ = "https://stackoverflow.com/questions/tagged/web-scraping"
    Dim results

    results = getHTTP(Url)
    Debug.Print results(0), results (1)
End Sub

可能更好地创建一个简单的类型或类并返回它。


推荐阅读