Board logo

標題: EXCEL VBA 匯入goodinfo網頁資料 [打印本頁]

作者: chickout2    時間: 2016-5-31 00:05     標題: EXCEL VBA 匯入goodinfo網頁資料

有幸google到版大GBKEE的文章
試著去查詢http://www.goodinfo.tw/stockinfo/ShowK_ChartFlow.asp?RPT_CAT=DR_3M&STOCK_ID=2454&CHT_CAT=MONTH
但會有物件錯誤


Option Explicit
Sub goodinfo()
    Dim A As Object, i As Integer, C As Variant, Sh As Worksheet, Stock As String
    Do
        Stock = InputBox("輸入股票代號", "股票代號", 2303)
    Loop Until Len(Stock) >= 4
    Set Sh = ActiveSheet                   '可指定工作表
    With CreateObject("InternetExplorer.application")
        .Navigate "http://www.goodinfo.tw/stockinfo/ShowK_ChartFlow.asp?RPT_CAT=DR_3M&STOCK_ID=" & Stock & "&CHT_CAT=MONTH"
        .Visible = True
        Do While .Busy Or .ReadyState <> 4
             DoEvents
        Loop
        Sh.Cells.Clear
        Set A = .Document.getelementsbytagname("table")(0)
        For i = 0 To A.Rows.Length - 1
            For C = 0 To A.Rows(i).Cells.Length - 1
                ActiveSheet.Cells(i + 1, C + 1) = A.Rows(i).Cells(C).innertext
            Next
        Next
        Set A = .Document.getelementbyid("content")
        For i = 0 To A.Rows.Length - 1
            For C = 0 To A.Rows(i).Cells.Length - 1
                ActiveSheet.Cells(i + 4, C + 1) = A.Rows(i).Cells(C).innertext
            Next
        Next
        Sh.UsedRange.EntireColumn.AutoFit
       .Quit
    End With
    MsgBox "OK"
End Sub
作者: chickout2    時間: 2016-5-31 00:35

Sorry, 補充一下內容  主要是要查詢
網頁底下的表格
http://www.goodinfo.tw/stockinfo/ShowK_ChartFlow.asp?RPT_CAT=DR_3M&STOCK_ID=3406&CHT_CAT=MONTH
作者: GBKEE    時間: 2016-6-1 08:41

回復 2# chickout2

試試看
  1. Option Explicit
  2. Sub EX()
  3.     Dim i As Integer, E As Object, C As Integer, Sh As Worksheet
  4.     With CreateObject("InternetExplorer.Application")
  5.         .Visible = True
  6.         .Navigate "http://www.goodinfo.tw/stockinfo/ShowK_ChartFlow.asp?RPT_CAT=DR_3M&STOCK_ID=2454&CHT_CAT=MONTH"
  7.         Do While .Busy Or .readyState <> 4: DoEvents:      Loop
  8.         With .DOCUMENT
  9.             Do
  10.                 If .all.tags("table").Length >= 16 Then Exit Do
  11.                 DoEvents
  12.             Loop
  13.             Set Sh = ActiveSheet
  14.             Sh.UsedRange.Clear
  15.             For Each E In .all.tags("table")(16).Rows
  16.                 i = i + 1 '
  17.                 For C = 0 To E.Cells.Length - 1
  18.                     Sh.Cells(i, C + 1) = E.Cells(C).innertext
  19.                 Next
  20.             Next
  21.             With Sh
  22.                  For i = 21 To .Range("A" & Rows.Count).End(xlUp).Row Step 18
  23.                     .Cells(i, "A").Resize(2).EntireRow.Delete
  24.                 Next
  25.             End With
  26.         End With
  27.         .Quit        '關閉網頁
  28.     End With
  29. End Sub
複製代碼

作者: chickout2    時間: 2016-6-1 20:48

謝謝版主, 可以運行
這幾天做了不少功課
不過還是無法完成
看了版主的代碼後學了不少
謝謝 幫忙
作者: ABK    時間: 2016-6-14 19:52

請教版大, 如果要將 3個不同的網頁資料 放在同一個工作頁裡, VBA要如何改。
第一個網頁資料從第 1列開始放,資料 共35行。
第二個網頁資料從第40列開始放,資料 共41行。  
第三個網頁資料從第90列開始放,只要擷取網頁前30行的資料 。

http://www.taifex.com.tw/chinese/3/7_12_3_tbl.asp  (35行)
http://www.taifex.com.tw/chinese/3/7_12_5_tbl.asp  (41行)
http://www.taifex.com.tw/chinese/3/7_8_tbl.asp    (前30行)




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