返回列表 上一主題 發帖

[發問] 交易所網站的收盤價已變更?用動態查詢已失效?

[發問] 交易所網站的收盤價已變更?用動態查詢已失效?

如何直接抓取匯入excel??
http://www.tse.com.tw/ch/trading/exchange/MI_INDEX/MI_INDEX.php
分類項目 ==>全部(不含權證,牛熊........)

回復 1# t8899

換了,用這個!

Sub XL()
Set XML = CreateObject("Microsoft.XMLHTTP")
Set stream = CreateObject("ADODB.stream")
Dim path As String, thePOSTdata, URL
path = "C:\"
日期 = "1031226"

    URL = "http://www.twse.com.tw/ch/trading/exchange/MI_INDEX/MI_INDEX.php"
    thePOSTdata = "download=csv&qdate=" & 日期 & "&selectType=ALLBUT0999"
        XML.Open "POST", URL, 0
        XML.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        XML.send thePOSTdata
    With stream
        .Open
        .Type = 1
        .write XML.responseBody
        If Dir(path & "收盤" & 日期 & ".csv") <> "" Then Kill (path & "收盤" & 日期 & ".csv")
        .SaveToFile (path & "收盤" & 日期 & ".csv")
        .Close
    End With

End Sub

TOP

回復  t8899

換了,用這個!

Sub XL()
Set XML = CreateObject("Microsoft.XMLHTTP")
Set stream =  ...
HSIEN6001 發表於 2014-12-26 21:47

1.前面的大盤統計資訊可以不要嗎 ??我只要每日收盤行情(全部(不含權證、牛熊證)")"
2.您是存成csv 檔,還要再叫進來,可直接匯入 sheet1 嗎?

TOP

本帖最後由 GBKEE 於 2014-12-28 07:24 編輯

回復 3# t8899

試試看
  1. Option Explicit
  2. Sub Ex_盤後資訊_每日收盤行情()
  3.     Dim A As Object, xDate As Date, EDATE As Date
  4.     '***********測試用
  5.     '抓到有為止(只抓5天),5天都抓不到也提示
  6.     EDATE = Date + 5
  7.     xDate = EDATE
  8.     '*************
  9.     'xDate = Date    '正式常程式碼
  10.     With CreateObject("InternetExplorer.Application")
  11.         .Visible = True
  12.         .Navigate "http://www.twse.com.tw/ch/trading/exchange/MI_INDEX/MI_INDEX.php"
  13.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  14. Ie_Refresh:
  15.         With .Document
  16.             .ALL("qdate").Value = Format(xDate, "E/MM/DD") '日期可修改
  17.             .ALL("selectType").Value = "MS"
  18.             .ALL("query-button").Click
  19.         End With
  20.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  21.         If InStr(.Document.BODY.innerText, "查無資料") Then
  22.             If xDate + 4 >= EDATE Then  '測試用********
  23.             'If xDate + 4 >= Date Then   '正式常程式碼
  24.                 Debug.Print xDate       '驗證用 可刪除
  25.                 xDate = xDate - 1
  26.                 GoTo Ie_Refresh
  27.             End If
  28.              .Quit
  29.             MsgBox Format(xDate, "E/MM/DD") & " 查無資料"
  30.             Exit Sub
  31.            
  32.         End If
  33.         Set A = .Document.getElementsByTagName("table")
  34.         .Document.BODY.innerHTML = A(A.Length - 1).outerHTML '取最後的一個"table"
  35.         
  36.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  37.         .ExecWB 17, 2       '  Select All
  38.         .ExecWB 12, 2       '  Copy selection
  39.         .Quit        '關閉網頁
  40.          With ActiveSheet    '可指定工作表
  41.             .UsedRange.Clear
  42.             .Range("A1").Select
  43.             .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NOHTMLFormatting:=True
  44.         End With
  45.            End With
  46. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復  t8899

試試看
GBKEE 發表於 2014-12-27 11:43

謝謝,可以
可否再加入
假如抓當天日期網站還沒產生(抓不到)則抓前一天.....抓到有為止(只抓5天)還抓不到就跳出
抓不到當天,則提示 抓到的日期(當天不用),5天都抓不到也提示

TOP

請問 GBKEE 網大:
  我將.ALL("selectType").Value = "ALLBUT0999" ‘全部(不含權證、牛熊證)")
   改成.ALL("selectType").Value = "MS"     '大盤統計資訊
程式跑到  .BODY.innerHTML = .getElementsByTagName("table")(1).outerHTML
出現 下列訊息:
“執行階段錯誤” 91” :
沒有設定物件變數或 WITH區塊變數

謝謝!

TOP

本帖最後由 t8899 於 2014-12-28 07:24 編輯
請問 GBKEE 網大:
  我將.ALL("selectType").Value = "ALLBUT0999" ‘全部(不含權證、牛熊證)")
   改成. ...
tsuneng 發表於 2014-12-27 16:15

改為
    .BODY.innerHTML = .getElementsByTagName("table")(0).outerHTML

TOP

本帖最後由 t8899 於 2014-12-28 07:30 編輯
回復  t8899
試試看
GBKEE 發表於 2014-12-27 11:43

下面這兩行不懂
    .ExecWB 17, 2       '  Select All
    .ExecWB 12, 2       '  Copy selection
17,2 跟 12,2 是怎麼算的 ??

TOP

感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復  t8899
參考一下
GBKEE 發表於 2014-12-28 07:39

證券代號  前面是兩個0轉入會不見 (會當成數字) 0050 ===>  50
這有無辦法修正?

TOP

        靜思自在 : 為自己找藉口的人永遠不會進步。
返回列表 上一主題