返回列表 上一主題 發帖

上櫃 個股日成交資訊 抓取問題

上櫃 個股日成交資訊 抓取問題

Hi 各位大大中秋快樂
最近我利用假日想抓取 上櫃 個股日成交資訊,部分程式碼如下,執行之後,有時候會停在圖面紅框的地方,顯示無資料,但有的時候又可以跑出成交訊息
而這個地方的程式碼,我找不到搜尋的按鈕,所以copy GKEBB大大之前有一段的語法    A.Focus   Application.SendKeys "~"
想請問各位先進,這一段我應該怎麼改進會比較好?



'------------------------------------------- 【上櫃公司】------------------------------------------------------
'------------------------- 尋找清單中有多少日期(月) 需要展收尋
Set monthrange = Sheets("清單").Range("D65536").End(xlUp) '表示尋找 A 欄的 stock 的最後一列
For searchmonthrange = 2 To monthrange.Row 'Stock 的執行範圍,從第 2 行開始執行,到最後一行
myyearwest = Sheets("清單").Cells(searchmonthrange, 3) '股價西元年
myyeareast = Sheets("清單").Cells(searchmonthrange, 3) - 1911 '股價民國年
mymonth = Sheets("清單").Cells(searchmonthrange, 4) '股價月
yearmonth = myyeareast & "/" & mymonth
'------------------------- 打開股票網頁
With CreateObject("InternetExplorer.Application") '開啟證券櫃臺買賣中心網頁
  .Visible = True
  .Navigate "http://www.tpex.org.tw/web/stock/aftertrading/daily_trading_info/st43.php?l=zh-tw"
   Do While .Busy Or .readyState <> 4: DoEvents: Loop
With .document
'--------------------輸入要查詢的日期
   For Each A In .getelementsbytagname("INPUT") '找原始碼有input參數
   If A.Name = "input_date" Then A.Value = yearmonth
   Next

  '--------------------輸入要查詢的股票代碼
   For Each A In .getelementsbytagname("INPUT") '找原始碼有input參數
   If A.Name = "input_stock_code" Then A.Value = stockcode
   Next

  '--------------------輸入要查詢的股票代碼
   For Each A In .getelementsbytagname("INPUT") '找原始碼有input參數
   If A.ID = "input_stock_code" Then
   A.Focus
   Application.SendKeys "~"
   End If
   Next

End With
Application.Wait Now + #12:00:05 AM# '等待網頁下載資料

Hi GBKEE 大大
謝謝你,我目前在IE8的網頁可以操作,不過我想請教一個問題,為什麼使用fireEvent ("onchange")之後,最後一段VBA,我用'Do While .Busy Or .readyState <> 4: DoEvents: Loop,這個語法,有時候網頁會無顯示資料,而要改用Application.Wait Now + #12:00:03 AM#,才比較穩呢,每次都有資料? 是不是要讓網頁等待

=============以下為VBA===================
'------------------------- 打開股票網頁
With CreateObject("InternetExplorer.Application") '開啟證券櫃臺買賣中心網頁
  .Visible = True
  .Navigate "http://www.tpex.org.tw/web/stock/aftertrading/daily_trading_info/st43.php?l=zh-tw"
   Do While .Busy Or .readyState <> 4: DoEvents: Loop

With .document

  '--------------------輸入要查詢的股票代碼
   For Each A In .getelementsbytagname("INPUT") '找原始碼有input參數
   If A.Name = "input_stock_code" Then A.Value = stockcode
   Next

  '--------------------輸入要查詢的日期
   For Each A In .getelementsbytagname("INPUT") '找原始碼有input參數
   If A.Name = "input_date" Then
   A.Value = yearmonth
   A.fireEvent ("onchange")
   End If
   Next

End With
Application.Wait Now + #12:00:03 AM# '等待網頁下載資料
'Do While .Busy Or .readyState <> 4: DoEvents: Loop

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題