VBA获取href值 [英] VBA to get the href value

查看:67
本文介绍了VBA获取href值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写宏以从网站中提取 href 值,这里的示例是从下面的 html 代码中提取值:'/listedco/listconews/SEHK/2015/0429/LTN201504291355_C.pdf'.href 是 html 标记 'a' 的属性之一,我添加了代码 getElementbyTagName'a' 但它不起作用,我的问题是如何将该 href 值提取到 L 列.有人可以帮忙吗?提前致谢!

I am writing macro to extract the href value from a website, example here is to extract the value: '/listedco/listconews/SEHK/2015/0429/LTN201504291355_C.pdf' from the html code below. The href is one of the attributes of the html tag 'a', I have add the code getElementbyTagName'a' but it did not work, my question is how to extract that href value to column L. Anyone could help? Thanks in advance!

  <a id="ctl00_gvMain_ctl03_hlTitle" class="news" href="/listedco/listconews/SEHK/2015/0429/LTN201504291355_C.pdf" target="_blank">二零一四年年報</a>

Sub Download_From_HKEX()
    Dim internetdata As Object
    Dim div_result As Object
    Dim header_links As Object
    Dim link As Object
    Dim URL As String
    Dim IE As Object
    Dim i As Object
    Dim ieDoc As Object
    Dim selectItems As Variant
    Dim h As Variant

    Dim LocalFileName As String
    Dim B As Boolean
    Dim ErrorText As String
    Dim x As Variant

    'Key Ratios
    For x = 1 To 1579
        Set IE = New InternetExplorerMedium
        IE.Visible = True
        URL = "http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main_c.aspx"
        IE.navigate URL
        Do
            DoEvents
        Loop Until IE.readyState = 4
        Application.Wait (Now + TimeValue("0:00:05"))
        Call IE.Document.getElementById("ctl00_txt_stock_code").setAttribute("value", Worksheets("Stocks").Cells(x, 1).Value)

        Set selectItems = IE.Document.getElementsByName("ctl00$sel_tier_1")
        For Each i In selectItems
            i.Value = "4"
            i.FireEvent ("onchange")
        Next i

        Set selectItems = IE.Document.getElementsByName("ctl00$sel_tier_2")
        For Each i In selectItems
            i.Value = "159"
            i.FireEvent ("onchange")
        Next i

        Set selectItems = IE.Document.getElementsByName("ctl00$sel_DateOfReleaseFrom_d")
        For Each i In selectItems
            i.Value = "01"
            i.FireEvent ("onchange")
        Next i

        Set selectItems = IE.Document.getElementsByName("ctl00$sel_DateOfReleaseFrom_m")
        For Each i In selectItems
            i.Value = "04"
            i.FireEvent ("onchange")
        Next i

        Set selectItems = IE.Document.getElementsByName("ctl00$sel_DateOfReleaseFrom_y")
        For Each i In selectItems
            i.Value = "1999"
            i.FireEvent ("onchange")
        Next i

        Application.Wait (Now + TimeValue("0:00:02"))
        Set ieDoc = IE.Document
        With ieDoc.forms(0)
            Call IE.Document.parentWindow.execScript("document.forms[0].submit()", "JavaScript")
            .submit
        End With
        Application.Wait (Now + TimeValue("0:00:03"))

        'Start here to extract the href value.
        Set internetdata = IE.Document
        Set div_result = internetdata.getElementById("ctl00_gvMain_ctl03_hlTitle")
        Set header_links = div_result.getElementsByTagName("a")
        For Each h In header_links
            Set link = h.ChildNodes.Item(0)
            Worksheets("Stocks").Cells(Range("L" & Rows.Count).End(xlUp).Row + 1, 12) = link.href
        Next
    Next x
End Sub

推荐答案

For Each h In header_links
     Worksheets("Stocks").Cells(Range("L" & Rows.Count).End(xlUp).Row + 1, 12) = h.href
Next

id 属性在文档中应该是唯一的:应该只有一个具有任何给定 id 的元素.所以

The id attribute is supposed to be unique in the document: there should only be a single element with any given id. So

IE.Document.getElementById("ctl00_gvMain_ctl03_hlTitle").href

应该可以.

这篇关于VBA获取href值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆