2015-09-20 102 views
0

我在寫宏以從網站中提取href值,此處的示例是從html代碼中提取值:'/listedco/listconews/SEHK/2015/0429/LTN201504291355_C.pdf'下面。 href是html標籤'a'的屬性之一,我添加了代碼getElementbyTagName'a'但它不起作用,我的問題是如何將該href值提取到列L.任何人都可以提供幫助?提前致謝!VBA獲取href值

<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 
+0

有沒有人可以幫忙? –

+0

你遇到過什麼問題?你的問題並不清楚。編輯你的問題來詳細說明。 – omegastripes

+0

'div_result.getElementsByClassName(「a」)'>>'div_result.getElementsByTagName(「a」)' –

回答

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

編輯:id屬性應該是在文檔中獨一無二的:有隻應與任何給定id的單個元素。所以

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

應該工作。