返回列表 上一主題 發帖

EXCEL VBA 匯入goodinfo網頁資料

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

Sorry, 補充一下內容  主要是要查詢
網頁底下的表格
http://www.goodinfo.tw/stockinfo/ShowK_ChartFlow.asp?RPT_CAT=DR_3M&STOCK_ID=3406&CHT_CAT=MONTH

TOP

回復 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
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

謝謝版主, 可以運行
這幾天做了不少功課
不過還是無法完成
看了版主的代碼後學了不少
謝謝 幫忙

TOP

[版主管理留言]
  • GBKEE(2016/6/15 09:57): 可上傳你vba 看看

請教版大, 如果要將 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行)

TOP

        靜思自在 : 有時當思無時苦,好天要積雨來糧。
返回列表 上一主題