- 帖子
- 50
- 主題
- 8
- 精華
- 0
- 積分
- 66
- 點名
- 0
- 作業系統
- WIN7
- 軟體版本
- OFFICE 2013
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2015-2-3
- 最後登錄
- 2024-12-3
|
7#
發表於 2016-9-18 23:14
| 只看該作者
本帖最後由 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去計算,而是直接用陣列計算,效率才會高。 |
|