Board logo

標題: [發問] 請問如何捉取網頁要輸入的TABLE到表格,謝謝 [打印本頁]

作者: wufonna    時間: 2019-7-27 20:22     標題: 請問如何捉取網頁要輸入的TABLE到表格,謝謝

參考http://forum.twbts.com/viewthread.php?tid=9511
請問那裏錯,如果Date要用 NOW()取1200天如何改,謝謝
  1. Sub Ex()
  2.     Dim i As Integer, s As Integer, k As Integer, A, ii, j
  3.     Dim co_id As String, isnew As String, season As String
  4.                                     '第一季 01,第二季 02第三季 03,第四季 04.
  5.     With CreateObject("InternetExplorer.Application")
  6.         .Visible = True
  7.         .Navigate "https://www.cnyes.com/twstock/ps_historyprice/1216.htm"
  8.         Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  9.         With .document
  10.             For Each A In .getelementsbytagname("INPUT")
  11.                 If A.Name = "ctl00$ContentPlaceHolder1$startText" Then A.Value = "2016/06/01"
  12.             Next
  13.             For Each A In .getelementsbytagname("INPUT")
  14.                 If A.Name = "ctl00$ContentPlaceHolder1$endText" Then A.Value = "2019/07/27"
  15.             Next
  16.             For Each A In .getelementsbytagname("INPUT")
  17.                 If Trim(A.Value) = "查詢" And A.Name = "ctl00$ContentPlaceHolder1$submitBut" Then A.Click      '按下[查詢]鍵
  18.             Next
  19.             

  20.         End With
  21.         On Error Resume Next       '***有些table沒Rows資料會產生錯誤 不理會它,程式繼續走
  22.         Set A = .document.getelementsbytagname("table")(0).outerhtml
  23.         
  24.         With ActiveSheet
  25.             .Cells.Clear
  26.            '************************
  27.            ' For ii = 0 To A.Length - 1        '不知道table範圍在何處: 從0開始
  28.            '******************************
  29.             For ii = 11 To A.Length - 1        ''從11開始 用 Debug.Print ii  找出所要資料的table範圍
  30.                 For i = 0 To A(ii).Rows.Length - 1      '寫入資料
  31.                 'Debug.Print ii  可找出所要資料的 table 範圍
  32.                 k = k + 1
  33.                 For j = 0 To 5
  34.                     Cells(k, j + 1) = A(ii).Rows(i).Cells(j).innerText
  35.                 Next
  36.             Next
  37.             Next
  38.    
  39.         End With
  40. '       .Quit        '關閉網頁
  41.     End With
  42. End Sub
  43. 'vba 操作ie匯入資料 'http://forum.twbts.com/viewthread.php?tid=9511
  44. '如何在網頁搜尋結果後,再按限時間按鈕
  45. '網頁登入-按鈕問題


  46. '<div class="mbx bd3" enableviewstate="false">
  47. '<h3 class="tabName"><span id="ctl00_ContentPlaceHolder1_titleLab">統一 歷史行情</span></h3>
  48. '<div class="blank10" enableviewstate="false"></div>
  49. '<span class="srchyear2" >
  50. '開始日期<input name="ctl00$ContentPlaceHolder1$startText" type="text" value="2016/06/01" maxlength="10" id="ctl00_ContentPlaceHolder1_startText" style="width:72px;" />
  51. '結束日期<input name="ctl00$ContentPlaceHolder1$endText" type="text" value="2019/07/27" maxlength="10" id="ctl00_ContentPlaceHolder1_endText" style="width:72px;" />
  52. '<input type="submit" name="ctl00$ContentPlaceHolder1$submitBut" value="查詢" id="ctl00_ContentPlaceHolder1_submitBut" class="butn btnga" />
  53. '    <span style="float:right">
  54. '</span>
  55. '</span>
複製代碼

作者: wufonna    時間: 2019-7-27 23:35

改這樣可行,但為什麼第二次執行會錯誤
  1. Sub Ex()
  2.     Dim i As Integer, s As Integer, k As Integer, A, ii, j
  3.     Dim co_id As String, isnew As String, season As String
  4.                                     '第一季 01,第二季 02第三季 03,第四季 04.
  5.     With CreateObject("InternetExplorer.Application")
  6.         .Visible = True
  7.         .Navigate "https://www.cnyes.com/twstock/ps_historyprice/1216.htm"
  8.         Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  9.         With .document
  10.             For Each A In .getElementsByTagName("INPUT")
  11.                 If A.Name = "ctl00$ContentPlaceHolder1$startText" Then A.Value = Format(Now - 1500, "yyyy/mm/dd") '"2016/06/01"
  12.             Next
  13.             For Each A In .getElementsByTagName("INPUT")
  14.                 If A.Name = "ctl00$ContentPlaceHolder1$endText" Then A.Value = Format(Now, "yyyy/mm/dd") '"2019/07/27"
  15.             Next
  16.             For Each A In .getElementsByTagName("INPUT")
  17.                 If Trim(A.Value) = "查詢" And A.Name = "ctl00$ContentPlaceHolder1$submitBut" Then A.Click      '按下[查詢]鍵
  18.             Next


  19.         End With
  20.     '    On Error Resume Next       '***有些table沒Rows資料會產生錯誤 不理會它,程式繼續走
  21.       Do While .Busy Or .ReadyState <> 4: DoEvents: Loop

  22.       
  23.      Set A = .document.getElementsByTagName("table")(0)
  24. '    On Error Resume Next

  25.         With ActiveSheet
  26.                 .Cells.Clear

  27.             For i = 0 To A.Rows.Length - 1

  28.                 For j = 0 To A.Rows(i).Cells.Length - 1

  29.                     .Cells(i + 1, j + 1) = A.Rows(i).Cells(j).innerText
  30. Debug.Print i
  31.                 Next

  32.             Next

  33.         End With

  34.         .Quit        '關閉網頁
  35.     End With
  36. End Sub
  37. 'vba 操作ie匯入資料 'http://forum.twbts.com/viewthread.php?tid=9511
  38. '如何在網頁搜尋結果後,再按限時間按鈕
  39. '網頁登入-按鈕問題


  40. '<div class="mbx bd3" enableviewstate="false">
  41. '<h3 class="tabName"><span id="ctl00_ContentPlaceHolder1_titleLab">統一 歷史行情</span></h3>
  42. '<div class="blank10" enableviewstate="false"></div>
  43. '<span class="srchyear2" >
  44. '開始日期<input name="ctl00$ContentPlaceHolder1$startText" type="text" value="2016/06/01" maxlength="10" id="ctl00_ContentPlaceHolder1_startText" style="width:72px;" />
  45. '結束日期<input name="ctl00$ContentPlaceHolder1$endText" type="text" value="2019/07/27" maxlength="10" id="ctl00_ContentPlaceHolder1_endText" style="width:72px;" />
  46. '<input type="submit" name="ctl00$ContentPlaceHolder1$submitBut" value="查詢" id="ctl00_ContentPlaceHolder1_submitBut" class="butn btnga" />
  47. '    <span style="float:right">
  48. '</span>
  49. '</span>
複製代碼
回復 1# wufonna




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)