Board logo

標題: [發問] 如何用VBA控制上櫃個股成交網頁option 控制項 [打印本頁]

作者: hsu5120    時間: 2015-2-10 23:44     標題: 如何用VBA控制上櫃個股成交網頁option 控制項

各大好:
想請教一下,如何使用VBA來控制上櫃個股成交網頁(http://www.otc.org.tw/web/stock/aftertrading/otc_quotes_no1430/stk_wn1430.php?l=zh-tw)
中  顯示 "全部"筆的 option 控制項,網頁中請選擇類股與資料日期的option 控制項,已經會使用VBA進行操控,可是顯示筆數資料的option 控制項好像
與Table 有 相關連,故看過網頁的原始碼不知如何使用VBA進行控制,請各位大大指教,謝謝!
[attach]20247[/attach]
  1. Sub 盤後資訊_上櫃每日收盤行情()
  2.     Dim A As Object, xDate As Date, EDATE As Date
  3.     EDATE = Date
  4.    
  5.     xDate = EDATE
  6.     '*************
  7.     'xDate = Date    '正式常程式碼
  8.     With CreateObject("InternetExplorer.Application")
  9.         .Visible = True
  10.         .Navigate "http://www.otc.org.tw/web/stock/aftertrading/otc_quotes_no1430/stk_wn1430.php?l=zh-tw"
  11.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  12. Ie_Refresh:
  13.         
  14.         With .Document
  15.       '填入類股 option "所有證券(不含權證、牛熊證)"
  16.        .ALL("sect").Value = "EW"
  17.        .ALL("sect").onchange
  18.        Application.Wait Now + TimeValue("00:00:03")
  19.       '填入資料日期 option
  20.        .ALL("input_date").Value = Format(xDate, "E/MM/DD")
  21.        .ALL("input_date").onchange
  22.         Application.Wait Now + TimeValue("00:00:03")
  23.       '?????
  24.       '顯示 "全部"筆資料的 option VBA如何寫??
  25.       '?????
  26.         End With
  27.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  28.         If InStr(.Document.BODY.innerText, "查無資料") Then
  29.              .Quit
  30.             MsgBox Format(xDate, "E/MM/DD") & " 查無資料"
  31.             Exit Sub
  32.            
  33.         End If
  34.         Set A = .Document.getElementsByTagName("table")
  35.            .Document.BODY.innerHTML = A(0).outerHTML '取"table"
  36.       

  37.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  38.         .ExecWB 17, 2       '  Select All
  39.         .ExecWB 12, 2       '  Copy selection
  40.         .Quit        '關閉網頁
  41.          With ActiveSheet    '可指定工作表
  42.             .UsedRange.Clear
  43.             .Range("A1").Select
  44.             .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NOHTMLFormatting:=True
  45.         End With
  46.            End With
  47. End Sub
複製代碼

作者: joey0415    時間: 2015-2-11 19:02

回復 1# hsu5120


抓這個http://www.otc.org.tw/web/stock/aftertrading/otc_quotes_no1430/stk_wn1430_print.php?l=zh-tw&d=104/02/11&se=AL&s=14,desc,0

不然csv很也簡單
作者: GBKEE    時間: 2015-2-13 17:10

回復 1# hsu5120
  1. With .Document
  2.             '填入類股 option "所有證券(不含權證、牛熊證)"
  3.             .all("sect").Value = "EW"
  4.             .all("sect").onchange
  5.             '填入資料日期 option
  6.             .all("input_date").Value = Format(xDate, "E/MM/DD")
  7.             .all("input_date").onchange
  8.             Application.Wait Now + TimeValue("00:00:03")
  9.             ' 顯示 "全部"筆資料的 option VBA如何寫??
  10.             '顯示 ?? 資料: stk_wn1430_result_length  option  -1 = >"全部"
  11.             .all("stk_wn1430_result_length")(1).Value = -1
  12.             '.all("stk_wn1430_result_length")(1).Item(0).Selected = True '選第一個
  13.             .all("stk_wn1430_result_length")(1).fireEvent ("onchange")
  14.             Application.Wait Now + TimeValue("00:00:03")
  15.         End With
複製代碼

作者: hsu5120    時間: 2015-2-14 12:11

謝謝大大提供的程式碼,剛測試可以正確執行且符合我的需求,
大大真是太厲害,謝謝!
還有joey0415 也感謝提供額外資訊供參考,謝謝!
:)
作者: h2483116    時間: 2015-2-23 22:23

joey0415大大:
可否幫忙提供一下上市股票的網址,謝謝!
作者: GOGOPOWER    時間: 2016-6-13 21:54

回復 3# GBKEE

小第試run看看
發現可以執行在執行的過程發現網頁中的

顯示幾筆資料(全部,10,25,...)時,程式雖然會將網頁選項選為"全部"
但網頁卻沒有更新導致只有收到幾筆資料。
好像是這邊有些問題
.all("stk_wn1430_result_length")(1).fireEvent ("onchange")
作者: c_c_lai    時間: 2016-6-14 08:48

回復 3# GBKEE
[attach]24485[/attach]
[attach]24486[/attach]
的確如樓上大大所言,只改變了標示內容,
而未再次 RePlay All。
作者: c_c_lai    時間: 2016-6-14 08:53

本帖最後由 c_c_lai 於 2016-6-14 08:59 編輯

回復 3# GBKEE
如果顯示內容如有再次 RePlay,
亦即更動,畫面應為:
[attach]24487[/attach]
此類應用,與我所提問的 selectType 極為雷同。
股票資料匯入,程式執行有問題




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