'------------------------------------------- 【上櫃公司】------------------------------------------------------
'------------------------- 尋找清單中有多少日期(月) 需要展收尋
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# '等待網頁下載資料作者: GBKEE 時間: 2015-9-29 14:47
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作者: GBKEE 時間: 2015-9-30 17:13