Board logo

標題: [發問] 請教版大 工作表3 工作表4 table 為何都捉不到資料,謝謝 [打印本頁]

作者: wufonna    時間: 2019-1-2 11:56     標題: 請教版大 工作表3 工作表4 table 為何都捉不到資料,謝謝

請教版大 工作表3取損益表(年表) 工作表4取資產負債表(年表)網頁 table 為何都捉不到資料,測試了table(0),table(1),table(2)都不可以,謝謝
  1. Dim ie As Object   '模組最頂端 Dim 供這模組的程序使用的變數
  2. Sub AllFile()
  3.     Dim i As Integer, v, Y As Integer, S As String
  4.     Set ie = CreateObject("internetexplorer.application")   '使用此方式可以免除 "設定引用項目"
  5.     With ie '縮小IE視窗
  6.         .Visible = True
  7.         .Width = 5
  8.         .Height = 5
  9.     End With

  10.     With 工作表1
  11.       Dim AR
  12.         AR = .Range("E1:M1")
  13.         .Range("E:M") = ""
  14.         .Range("E1:M1") = AR

  15. '        .Range("E2").CurrentRegion = ""            '清除工作表1,年度範圍
  16.     v = "2330"
  17.           GetDividend (v)
  18.            GetClosePrice (v)
  19.            GetIncome (v)
  20.            GetBalance (v)
  21.            GetShareholding (v)

  22.             Debug.Print v

  23. End With
  24.     With ie  'IE視窗最大化
  25.         Application.WindowState = xlMaximized
  26.         .Height = Application.Height
  27.         .Width = Application.Width
  28.         .Quit
  29.     End With
  30. End Sub

  31. Private Sub GetDividend(ByVal ss As String)     '取股利網頁

  32.     Dim rr As String, T As Date, i, ii, k, j, S As Object
  33.     T = Time
  34.     rr = "http://pscnetinvest.moneydj.com.tw/z/zc/zcc/zcc_" & ss & ".djhtm"
  35.     With ie
  36.         .Navigate rr
  37.         Do While .readyState <> 4                          '等待網頁下載完畢
  38.               DoEvents
  39.               If Time >= T + #12:00:03 AM# Then
  40.                 DoEvents
  41.                 Application.SendKeys "~"                    '股票代號錯誤,網頁會有訊息,須按確定,才可繼續下面股票代號
  42.                
  43.                
  44.                 Exit Do
  45.               End If
  46.         Loop
  47.         Do
  48.         Set S = .Document.getElementsByTagName("table")(2)
  49.         Loop Until Not S Is Nothing

  50.         With 工作表2
  51.             .UsedRange.Clear
  52.             For i = 0 To S.Rows.Length - 1      '寫入資料
  53.                 k = k + 1
  54.                     For ii = 0 To S.Rows(i).Cells.Length - 1  ' S.Rows(i).Cells.Length - 1 才是正確
  55.                     .Cells(k, ii + 1) = S.Rows(i).Cells(ii).innerText
  56.                     DoEvents
  57.                     Next
  58.             Next
  59.         End With
  60.     End With
  61. End Sub

  62. Private Sub GetClosePrice(ByVal ss As String) ' 取基本資料

  63.     Dim rr As String, T As Date, i, ii, k, j, S As Object
  64.     T = Time
  65.     rr = "http://pscnetinvest.moneydj.com.tw/z/zc/zca/zca_" & ss & ".djhtm"
  66.     With ie
  67.         .Navigate rr
  68.         Do While .readyState <> 4                          '等待網頁下載完畢
  69.               DoEvents
  70.               If Time >= T + #12:00:03 AM# Then
  71.                 DoEvents
  72.                 Application.SendKeys "~"                    '股票代號錯誤,網頁會有訊息,須按確定,才可繼續下面股票代號

  73.                 Exit Do
  74.               End If
  75.         Loop
  76.         Do
  77.         Set S = .Document.getElementsByTagName("table")(2)
  78.         Loop Until Not S Is Nothing

  79.         With 工作表3
  80.             .UsedRange.Clear
  81.             For i = 0 To S.Rows.Length - 1      '寫入資料
  82.                 k = k + 1
  83.                     For ii = 0 To S.Rows(i).Cells.Length - 1  ' S.Rows(i).Cells.Length - 1 才是正確
  84.                     .Cells(k, ii + 1) = S.Rows(i).Cells(ii).innerText
  85.                     DoEvents
  86.                     Next
  87.             Next
  88.         End With
  89.     End With
  90. End Sub


  91. Private Sub GetIncome(ByVal ss As String)     '取損益表(年表)網頁

  92.     Dim rr As String, T As Date, i, ii, k, j, S As Object
  93.     T = Time
  94.    
  95.     rr = "http://kgieworld.moneydj.com/z/zc/zcq/zcqa/zcqa_" & ss & ".djhtm"

  96.     With ie
  97.         .Navigate rr
  98.         Do While .readyState <> 4                          '等待網頁下載完畢
  99.               DoEvents
  100.               If Time >= T + #12:00:03 AM# Then
  101.                 DoEvents
  102.                 Application.SendKeys "~"                    '股票代號錯誤,網頁會有訊息,須按確定,才可繼續下面股票代號
  103.                
  104.                 Exit Do
  105.               End If
  106.         Loop
  107.         Do
  108.         Set S = .Document.getElementsByTagName("table")(2)
  109.         Loop Until Not S Is Nothing

  110.         With 工作表4
  111.             .UsedRange.Clear
  112.             For i = 0 To S.Rows.Length - 1      '寫入資料
  113.                 k = k + 1
  114.                     For ii = 0 To S.Rows(i).Cells.Length - 1  ' S.Rows(i).Cells.Length - 1 才是正確
  115.                     .Cells(k, ii + 1) = S.Rows(i).Cells(ii).innerText
  116.                     DoEvents
  117.                     Next
  118.             Next
  119.         End With
  120.     End With
  121. End Sub

  122. Private Sub GetBalance(ByVal ss As String)     '取資產負債表(年表)網頁

  123.     Dim rr As String, T As Date, i, ii, k, j, S As Object
  124.     T = Time
  125.    
  126.     rr = "http://kgieworld.moneydj.com/z/zc/zcp/zcpb/zcpb_" & ss & ".djhtm"
  127.    
  128.     With ie
  129.         .Navigate rr
  130.         Do While .readyState <> 4                          '等待網頁下載完畢
  131.               DoEvents
  132.               If Time >= T + #12:00:03 AM# Then
  133.                 DoEvents
  134.                 Application.SendKeys "~"                    '股票代號錯誤,網頁會有訊息,須按確定,才可繼續下面股票代號
  135.                
  136.                 Exit Do
  137.               End If
  138.         Loop
  139.         Do
  140.         Set S = .Document.getElementsByTagName("table")(2)
  141.         Loop Until Not S Is Nothing


  142.         With 工作表5
  143.             .UsedRange.Clear
  144.             For i = 0 To S.Rows.Length - 1      '寫入資料
  145.                 k = k + 1
  146.                     For ii = 0 To S.Rows(i).Cells.Length - 1  ' S.Rows(i).Cells.Length - 1 才是正確
  147.                     .Cells(k, ii + 1) = S.Rows(i).Cells(ii).innerText
  148.                     DoEvents
  149.                     Next
  150.             Next
  151.         End With
  152.     End With
  153. End Sub
  154. Private Sub GetShareholding(ByVal ss As String)     '取董監持股網頁

  155.     Dim rr As String, T As Date, i, ii, k, j, S As Object
  156.     T = Time
  157.     rr = "http://pscnetinvest.moneydj.com.tw/z/zc/zcj/zcj_" & ss & ".djhtm"     '取董監持股網頁
  158.     With ie
  159.         .Navigate rr
  160.         Do While .readyState <> 4                          '等待網頁下載完畢
  161.               DoEvents
  162.               If Time >= T + #12:00:03 AM# Then
  163.                 DoEvents
  164.                 Application.SendKeys "~"                    '股票代號錯誤,網頁會有訊息,須按確定,才可繼續下面股票代號
  165.                
  166.                 Exit Do
  167.               End If
  168.         Loop
  169.         Do
  170.         Set S = .Document.getElementsByTagName("table")(3)
  171.         Loop Until Not S Is Nothing

  172.         With 工作表6
  173.             .UsedRange.Clear
  174.             For i = 0 To S.Rows.Length - 1      '寫入資料
  175.                 k = k + 1
  176.                     For ii = 0 To S.Rows(i).Cells.Length - 1  ' S.Rows(i).Cells.Length - 1 才是正確
  177.                     .Cells(k, ii + 1) = S.Rows(i).Cells(ii).innerText
  178.                     DoEvents
  179.                     Next
  180.             Next
  181.         End With
  182.     End With
  183. End Sub
複製代碼





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