返回列表 上一主題 發帖

交易明細下載

交易明細下載

http://bsr.twse.com.tw/bshtm/

這個網站比較有人性一點  參數找的到也可以設定

但是我不知道頁數有幾張

土法煉鋼一頁一頁弄也很沒有效率

查詢太多次還會被檔

請問程式該如何下載
  1. Sub 個股交易明細下載()
  2.     Dim 股票代號 As String, 日期 As Variant, N, i As Integer, A, T As Date
  3.     Do While Not IsDate(日期)
  4.         日期 = InputBox("輸入查詢日期", "日期", Date)
  5.         If 日期 = "" Then End
  6.     Loop
  7.     Do While 股票代號 = ""
  8.         股票代號 = InputBox("股票代號", "輸入查詢之股票代號", "1101")
  9.         If 日期 = "" Then End
  10.     Loop
  11.     日期 = Format(日期, "yyyymmdd")
  12.     T = Time
  13.     With ActiveSheet
  14.         For Each N In .Names
  15.             N.Delete
  16.         Next
  17.         .Cells.Clear
  18.         Application.StatusBar = False
  19.         On Error GoTo A_Wait
  20.         With .QueryTables.Add(Connection:="URL;http://bsr.twse.com.tw/bshtm/bshtm_report_Messages.aspx?strDate=" & 日期 & "&StartNumber=" & 股票代號 & "&FocusIndex=1", Destination:=Range("A1"))
  21.             .Name = 日期 & "_" & 股票代號 & "_1"
  22.             .FieldNames = True
  23.             .RowNumbers = False
  24.             .FillAdjacentFormulas = False
  25.             .PreserveFormatting = True
  26.             .RefreshOnFileOpen = False
  27.             .BackgroundQuery = True
  28.             .RefreshStyle = xlInsertDeleteCells
  29.             .SavePassword = False
  30.             .SaveData = True
  31.             .AdjustColumnWidth = True
  32.             .RefreshPeriod = 0
  33.             .WebSelectionType = xlEntirePage
  34.             .WebFormatting = xlWebFormattingNone
  35.             .WebPreFormattedTextToColumns = True
  36.             .WebConsecutiveDelimitersAsOne = True
  37.             .WebSingleBlockTextImport = False
  38.             .WebDisableDateRecognition = False
  39.             .WebDisableRedirections = False
  40.             .Refresh BackgroundQuery:=False
  41.             If Application.CountA(.ResultRange) = 0 Then
  42.                 MsgBox Format(日期, "0000/00/00") & " 休市!!!  或  股票代號:" & 股票代號 & " 錯誤 !!!"
  43.                 [A1].Select
  44.                 End
  45.             End If
  46.         End With
  47.         i = 2
  48.         Do
  49.             .Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
  50.             With .QueryTables.Add(Connection:="URL;http://bsr.twse.com.tw/bshtm/bshtm_report_Messages.aspx?strDate=" & 日期 & "&StartNumber=" & 股票代號 & "&FocusIndex=" & i, Destination:=Selection)
  51.                 .Name = 日期 & "_" & 股票代號 & "_" & i
  52.                 .WebSelectionType = xlSpecifiedTables
  53.                 .WebFormatting = xlWebFormattingNone
  54.                 .WebTables = "6"
  55.                 .WebPreFormattedTextToColumns = True
  56.                 .WebConsecutiveDelimitersAsOne = True
  57.                 .WebSingleBlockTextImport = False
  58.                 .WebDisableDateRecognition = False
  59.                 .WebDisableRedirections = False
  60.               ''''''無法查詢時稍待  到  A_Wait: '''''
  61.                 .Refresh BackgroundQuery:=False
  62.                 If Application.CountA(.ResultRange) = 0 Then GoTo Out
  63.                 i = i + 1
  64.             End With
  65.             A = CreateObject("WScript.Shell").popup("請等後下載..." & Chr(10) & Chr(10) & "** 請勿按下 ** [確定]", 4, 日期 & "_" & .[F2] & "  第" & i & "頁", 16 * 3 + 0)
  66.             Application.ScreenUpdating = True
  67.         Loop
  68. Out:
  69.         .UsedRange.Columns.AutoFit
  70.         .[A1].Select
  71.         A = CreateObject("WScript.Shell").popup("共下載" & i & "頁", 5, 日期 & "_" & 股票代號, 48 + 0)
  72.         Application.StatusBar = "共下載 " & i & "頁 費時 " & Format(Time - T, "HH:MM:SS")
  73.     End With
  74.     End
  75. A_Wait:
  76.     Application.StatusBar = "無法查詢等候10秒鐘"
  77.     Application.Wait Now + TimeValue("00:00:10")
  78.     Err.Clear
  79.     Application.StatusBar = False
  80.     Resume    '重返查詢
  81. End Sub
複製代碼
以前可以下載到...現在下不到,請求高手解惑

好厲害!厲害......
成功了
等待版主分享完整下載上櫃資料內碼
感恩

TOP

回復 34# GBKEE

試了,成功!!  GBKEE 果然是高人,謝謝熱心相助!!!

TOP

本帖最後由 GBKEE 於 2012-8-11 06:54 編輯

回復 33# diabo
感謝相助 成功!
  1. Option Explicit
  2. Private Sub 下載htm()
  3.     Dim xml As Object     '用來取得網頁資料
  4.     Dim stream            'As ADODB.stream   '用來儲存二進位檔案
  5.     Dim URL As String     '目的網址
  6.     Dim thePOSTdata       '參數
  7.     Set xml = CreateObject("Microsoft.XMLHTTP")
  8.     Set stream = CreateObject("ADODB.stream")
  9.     URL = "http://www.gretai.org.tw/ch/stock/aftertrading/broker_trading/download_ALLCSV.php"
  10.     thePOSTdata = "curstk=3527&stk_date=1010810"
  11.         xml.Open "POST", URL, 0
  12.         xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  13.         xml.send thePOSTdata
  14.     With stream
  15.         .Open
  16.         .Type = 1
  17.         .write xml.ResponseBody
  18.         If Dir("D:\3527.CSV") <> "" Then Kill "D:\3527.CSV"
  19.         .SaveToFile ("D:\3527.CSV")                              
  20.         .Close
  21.     End With
  22. Set xml = Nothing
  23. Set stream = Nothing
  24. End Sub
複製代碼

TOP

回復 31# GBKEE


    櫃買中心的這個SERVER端程式只接收 POST傳遞 (GET傳遞無效) 的資料,須採用 XMLHTTP 以 POST 傳遞 thePOSTdata,取得 response 後直接存成 csv 即可
  1.    thePOSTdata = "curstk=" & 股票代碼 & "&fromw=0&numbern=100&stk_date=" & 資料日期    '日期格式 1010730
  2.    thePOSTActionFile = "http://www.gretai.org.tw/ch/stock/aftertrading/broker_trading/download_ALLCSV.php"

  3.    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
  4.    oXMLHTTP.Open "POST", thePOSTActionFile, False
  5.    oXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  6.    
  7.    'send request - POST
  8.     oXMLHTTP.send thePOSTdata
  9. ....
複製代碼
diabo

TOP

回復 31# GBKEE
謝謝GBKEE 大大 熱心分享,感恩!!

TOP

回復 26# tsuneng
讓你失望了, 試了一天 仍是失敗 對網頁語言不熟 無法下載 這網址所有的資料
http://www.gretai.org.tw/ch/stock/aftertrading/broker_trading/brokerBS.php?  嚐試用 IE 下載Tables 的內容 但還是失敗
http://forum.twbts.com/viewthread.php?tid=7395&page=1&extra=#pid42189 的5# 附檔
http://www.gretai.org.tw/ch/stock/aftertrading/broker_trading/download_ALLCSV.php?'可下載全部CSV: 但對網頁架構不熟,寫不出它的參數
望知悉者相助
用 EXCEL  WEB的查詢也有所限制,只可查看第一頁的資料,
  1. Option Explicit
  2. Sub Ex()
  3.     With ActiveSheet.QueryTables.Add("URL;http://www.gretai.org.tw/ch/stock/aftertrading/broker_trading/brokerBS.php?stk_code=6121", ActiveSheet.[A1])
  4.         .WebSelectionType = xlSpecifiedTables
  5.         .WebFormatting = xlWebFormattingNone
  6.         .WebTables = "11,13,14"
  7.         .Refresh BackgroundQuery:=False
  8.     End With
  9. End Sub
複製代碼

TOP

回復 29# lalalada


    這邊是xls,所以
htm 的我分享在這之前的討論
http://forum.twbts.com/viewthrea ... a=pageD1&page=3

TOP

回復 28# HSIEN6001

好耶~
我也在想怎麼把htm良好的轉成csv或xls
成功的話我目前的問題幾乎就全部解決了

TOP

回復 27# lalalada

我也覺得csv方便,一秒好幾檔   (爽!)
可惜!證交所並未將格式弄好,資料有缺~~~扼脕!

等等我分享htm 轉xls
這邊等G大分享,我們外行的乖乖地
[虛心求學]

TOP

        靜思自在 : 愛不是要求對方,而是要由自身的付出。
返回列表 上一主題