如何使用VBA Excel从资源获取og:image?

4

我该如何在使用 VBAExcel 2007 的情况下从资源中获取 og:image 呢?

例如,这个 URL:

https://www.bbc.com/reel/video/p08jgfdg/the-truth-about-christopher-columbus

请提供您的编码尝试。抱歉,我无法翻译这个请求。请提供需要翻译的具体内容。 - QHarr
1个回答

5

如果您使用的是较新版本的Excel,可以尝试以下方法:

Sub GetImageFromHead()

    Dim MyUrl As String
    MyUrl = "https://www.bbc.com/reel/video/p08jgfdg/the-truth-about-christopher-columbus"

    'Required library reference: Microsoft XML v6.0
    Dim HttpRequest As MSXML2.XMLHTTP60
    Set HttpRequest = New MSXML2.XMLHTTP60
    HttpRequest.Open "GET", MyUrl, False
    HttpRequest.Send
    
    Dim HtmlDoc As Object
    Set HtmlDoc = CreateObject("htmlfile")
    HtmlDoc.Write HttpRequest.responseText

    'This next line makes sure that the JavaScript on the page gets processed before continuing execution of the code.
    DoEvents 

    'Required library reference: Microsoft HTML Object
    Dim MetaCollection As MSHTML.IHTMLElementCollection
    Set MetaCollection = HtmlDoc.getElementsByTagName("meta")
    
    Dim HtmlElement As MSHTML.IHTMLElement
    For Each HtmlElement In MetaCollection
        If HtmlElement.getAttribute("property") = "og:image" Then
            ActiveSheet.Pictures.Insert (HtmlElement.getAttribute("content"))
        End If
    Next

End Sub

但是,由于你的问题涉及Excel 2007,因此你需要像这样定义HttpRequest

    'Required library reference: Microsoft XML v3.0 or v5.0
    Dim HttpRequest As MSXML2.XMLHTTP
    Set HttpRequest = New MSXML2.XMLHTTP

如果你想要一个只返回URL字符串而不是将其用于插入活动工作表中的图像的函数,你可以轻松地编辑Sub过程,使其成为一个接受MyUrl参数并返回字符串的函数(例如:这样)。


@DecimalTurn 我已经将代码放在一个模块中,做了所有的引用,但仍然无法执行代码。你能否解释一下实现过程,以防我做错了什么? - bpy
2
@bpy - 我刚意识到你的问题有“Excel-2007”标签。我添加了一些内容,应该可以使它在那个版本的Excel中工作。 - DecimalTurn
1
它在HttpRequest.Send处中断...无论如何...这是否可能成为一个函数,以便我可以从任何单元格获取MyUrl,就像这样:=GetImageFromHead(A3) - bpy
3
如果你告诉我运行时错误代码,也许我可以帮忙。但是因为我没有Excel 2007,测试可能有点困难。关于函数形式,你肯定可以通过使用MyUrl作为参数来实现,但你想让函数返回什么呢?作为字符串的图像URL? - DecimalTurn
1
我理解缺少Excel 2007并且非常感谢您的努力。但是有没有办法在这里识别错误?至于第二个问题:是的!我希望该函数返回图像URL作为字符串。再次感谢! - bpy
2
@bpy - 让我们把这个讨论移到聊天室 - DecimalTurn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接