返回列表 上一主題 發帖

轉Web資料問題 !!

轉Web資料問題 !!

http://www.twse.com.tw/ch/trading/exchange/FMNPTK/FMNPTKMAIN.php
使用此網頁查詢個股的年度交易資料 ,
因網頁改版 , 原本的程式已無法抓出資料轉至Excel中 ,
搭配 Fiddler 查詢 post 時的 URL , 但都無法轉出內容 , 全都是空的滴 ,
求解 , TKS !!

Option Explicit
'http://www.twse.com.tw/ch/trading/exchange/FMNPTK/FMNPTKMAIN.php
'<input name="CO_ID" type="text" size="8" value="2303">
'<input name="query-button" type="submit" class="board" value="查詢" onclick="submitForm($CO_ID)">

Sub TT()
    Dim Co_Id As String, xTable As Object, Sh As Worksheet, R As Integer, C As Integer, i As Integer, ii As Integer
    'Co_Id = stock_no
    Co_Id = InputBox("Input Stock No")
   
    With CreateObject("InternetExplorer.Application")
        .Visible = True     '**網頁不顯示 .Visible = False
        .Navigate "http://www.twse.com.tw/ch/trading/exchange/FMNPTK/FMNPTKMAIN.php?&CO_ID=" & Co_Id
        
        Do While .Busy Or .readyState <> 4: DoEvents: Loop '等候網頁宰入完整
            .Document.ALL("query-button").Click            '網頁上按下查詢鍵
               
        Do While .Busy Or .readyState <> 4: DoEvents: Loop    '等候網頁宰入完整
        Set xTable = .Document.ALL.TAGS("Table")        '設定變數為網頁 tagname "Table"的物件集合

        '***這段程式碼供尋找第幾個Table為所你要的資料**
        'For i = 0 To xTable.Length - 1? ?'Length 網頁物件集合計算子物件的函數
        'MsgBox "第" & i & "個資料" & vbLf & xTable(i).innertext '**查看你要的資料為第幾個Table
        ' Next
        '************************************

        Set Sh = Sheets("temp") '指定工作頁
        Sh.UsedRange.Clear      '清除工作頁

        '*******讀取資料的程式碼******************
        ii = 1
        For i = 3 To 4
            If InStr(xTable(i).innertext, "查無資料!") Then MsgBox xTable(i).innertext: .Quit: Exit Sub

            For R = 0 To xTable(i).Rows.Length - 1
                For C = 0 To xTable(i).Rows(R).Cells.Length - 1
                    Sh.Cells(R + ii, C + 1) = xTable(i).Rows(R).Cells(C).innertext
                Next
            Next
        ii = R + 2

        Next

    '****************************************************
    With Sh
        Co_Id = .[a1]
        .[a1] = ""
        .UsedRange.Columns.AutoFit  '**AutoFit 方法 將範圍中的欄寬和列高調整為最適當的值。
        
        .[a1] = Co_Id
    End With
   
    .Quit  '關閉網頁
   
    End With
End Sub


執行後出現錯誤在  If InStr(xTable(i).innertext, "查無資料!") Then MsgBox xTable(i).innertext: .Quit: Exit Sub
請那語法有誤 ? 謝謝

TOP

我再試試 , 謝謝......

TOP

目前使用 office 365 , 有更新所以應該是 2016 版 ,
IE 資料網頁有開啟 , 而且不用按畫面也能帶出資料 ,
只是抄寫至 sheet 時仍沒有成功 , 完全是空白滴.......

TOP

活頁簿2.zip (16.58 KB)
檔案如附件 , 請協助 , 謝謝 !!

TOP

修正後仍沒有正確抄錄資料 ,
中斷後 , 發現都在 DoEvents 那 ,
並沒有繼續往下執行 , 所以還沒有到抄錄資料的程式.....
這是因為轉錄到"Table"作業未完成 , 還是它一直在循環中 ?
這部分可以如何修正 ? 謝謝....

TOP

採用 joey0415 的方法 , 資料可以轉出來了 ,
感謝二位的協助 .......

TOP

        靜思自在 : 君子立恆志,小人恆立志。
返回列表 上一主題