返回列表 上一主題 發帖

[發問] 從證交所抓取收盤價的VBA方法請益

[發問] 從證交所抓取收盤價的VBA方法請益

目前小弟還是用最基本的web資料匯入(YAHOO股市)
現在抓YAHOO的股票
超過10筆以上速度已開始有點LAG了
想請教大大們都是用什麼方法把每日的收盤資料(股價部分)
匯入到EXCEL裡面的?
主要是想看各位大大都是用什麼方法?(證交所的)
會比較方便,我這樣一筆一筆的好像不是很好用

回復 1# bioleon69
將每日資料一一存入 SQL 資料庫就不至於 LAG 了。
需要時再從 SQL 資料庫提取資料。

TOP

1次抓1筆     vs.   1次抓1000筆

TOP

回復 2# c_c_lai


怎麼使用呢?
大大是否願意分享您的方式~~

TOP

本帖最後由 c_c_lai 於 2016-9-18 21:13 編輯

回復 4# bioleon69

TOP

回復 4# bioleon69

TOP

本帖最後由 ketrddem 於 2016-9-18 23:23 編輯

用鉅亨網來抓歷史股價

第一張表為「清單」,設定你要抓取的股票清單,第一列為股號,第二列以後依序為你的股票代號
新增一個模組
SUB TEST()
Dim 股號 As String
Dim 查詢起始日 As Date
查詢起始日 = sheet1.Cells(1, 4)


For i = 2 To sheet1.Cells(Rows.Count, 1).End(xlUp).Row
股號 = sheet1.Cells(i, 1).Value
On Error Resume Next
If Sheets(股號) Is Nothing Then '指定的工作表不存在
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = 股號
End If

Dim QT As QueryTable
Dim WebAddress As String
WebAddress = "http://www.cnyes.com/twstock/ps_historyprice/" & 股號 & ".htm"

With ThisWorkbook.Worksheets(股號)
.Cells.Clear
Set QT = .QueryTables.Add("URL;" & WebAddress, .Range("$A$1"))
End With
With QT
.PostText = "ctl00$ContentPlaceHolder1$startText=" & 查詢起始日
.WebTables = "2"
.Refresh False
End With
Next
END SUB

以上方法是WEB查詢,依次將清單的股票歷史股價抓下來,速度還OK。
另一種方法是用winhttp5.1的方法,缺點是只適用32依元,速度比較過,winhttp5.1的方法比較快,但其實差不了多少。
歷史股價抓下來後,就用另一個工作簿,使用SQL語法去抓這資料,再做計算。SQL語法去抓,其實也很快,之後做計算,建議不要直接讀寫RANGE去計算,而是直接用陣列計算,效率才會高。
EXCEL VBA新手,請前輩多多指教

TOP

回復 8# ketrddem

你好,複製程式碼到excel發現無法執行
XD

TOP

本帖最後由 ketrddem 於 2016-9-18 23:27 編輯

回復 9# bioleon69

插入模組
語法寫到模組裏
然後要設定一個查詢的起始日,我是寫在cells(1,4)
歷史股價.rar (47.44 KB)
EXCEL VBA新手,請前輩多多指教

TOP

回復 10# ketrddem


有點複雜 看不太懂XDD
是否可以附個檔案?

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題