用Excel抓Yahoo Finance歷史股價 - 股票

Carol avatar
By Carol
at 2017-11-08T23:02

Table of Contents

網誌好讀版:
http://kslman.blogspot.tw/2017/11/excalvbacsv.html

------以下是內文------
google試算表跑資料很慢,而且抓不到上櫃和興櫃資料。

而且如果要跟我原本電腦裡的資料連結還要下載下來。

因為有用Excel做紀錄的習慣,所以還是直接匯在Excel的檔案裏面比較方便。


研究了幾天,把之前yahoo那個VBA,改成抓證交所、櫃買中心、政府資料開放平臺的方案
,供大家參考:
https://drive.google.com/open?id=1Ekn1MIGolNi3bqoH-xfv16mD9Z_D0OoF

(政府開放平台的興櫃資料我是查到這個:https://data.gov.tw/dataset/11398
因為我不知道怎麼解析櫃買中心的興櫃csv下載連結,有人知道的話可以跟我說下

使用方式:
1. 「關注」的分頁C列填入股票代碼。
2. 點擊「TW」、「TWO」、「TWN」各分頁左上「refresh」按鈕就可以刷新。

目前問題:
1. 興櫃股票我抓的政府資料開放平臺的資料沒有前一天價格,所以沒有辦法算漲跌、漲
跌幅和昨收。(如果有人知道哪邊抓的資料有漲跌或前一天價格可以跟我說一下
2. P/E只有上市有。
3. 目前我只會每個分頁各自加一個按鈕,但我不知道怎麼樣做可以一個按鈕直接刷新三
個分頁,如果有人知道怎麼做可以教我一下,我可以調整一下
4. 美股不知道哪邊有資料,有人知道那邊有美股類似證交所這樣一個表有全部股價資料
的網站嗎?
5. 我不知道要怎麼判斷最近交易日,所以如果還沒收盤或假日用會沒資料。
(暫時先找了一個土炮的方法,目前的連結已經先更新)


巨集內容如下。

抓上市股票:

Private Sub CommandButton1_Click()

'宣告變數
Dim QuerySheet As Worksheet
Dim DataSheet As Worksheet
Dim qurl As String
'告訴Excel不要每更新一格就重新計算
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
Set DataSheet = ActiveSheet
qurl =
"http://www.tse.com.tw/exchangeReport/MI_INDEX?response=csv&date=" +
Range("A9") + Range("A10") + Range("A11") + "&type=ALLBUT0999"
Range("B:Z").Clear
'抓取資料
QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl,
Destination:=DataSheet.Range("B1"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
.RefreshStyle = xlInsertEntireRows
.Delete
End With

'讓Excel重新活回來,讓資料能夠顯示
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
'切數據
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True,
_
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5,
1), Array(6, 1)), _
TrailingMinusNumbers:=True
End Sub

抓上櫃股票:
Private Sub CommandButton1_Click()

'宣告變數
Dim QuerySheet As Worksheet
Dim DataSheet As Worksheet
Dim qurl As String
'告訴Excel不要每更新一格就重新計算
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
Set DataSheet = ActiveSheet
qurl =
"http://www.tpex.org.tw/web/stock/aftertrading/otc_quotes_no1430/stk_wn1430_print.php?l=zh-tw&d="
+ Range("A9") + "/" + Range("A10") + "/" + Range("A11") +
"&se=EW&s=0,asc,0"
Range("B:Z").Clear
'抓取資料
QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl,
Destination:=DataSheet.Range("B1"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
.RefreshStyle = xlInsertEntireRows
.Delete
End With

'讓Excel重新活回來,讓資料能夠顯示
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
End Sub

抓興櫃股票:
Private Sub CommandButton1_Click()
'宣告變數
Dim QuerySheet As Worksheet
Dim DataSheet As Worksheet
Dim qurl As String
'告訴Excel不要每更新一格就重新計算
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
Set DataSheet = ActiveSheet
qurl = "http://www.gretai.org.tw/storage/emgstk/ch/new.csv"
Range("B:Z").Clear
'抓取資料
QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl,
Destination:=DataSheet.Range("B1"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
.RefreshStyle = xlInsertEntireRows
.Delete
End With

'讓Excel重新活回來,讓資料能夠顯示
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
'切數據
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True,
_
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5,
1), Array(6, 1)), _
TrailingMinusNumbers:=True
End Sub



--
Tags: 股票

All Comments

Dora avatar
By Dora
at 2017-11-09T13:34
感謝分享
Brianna avatar
By Brianna
at 2017-11-11T16:46
感謝分享
George avatar
By George
at 2017-11-11T23:38
感謝!!順便學coding!
Annie avatar
By Annie
at 2017-11-14T05:18
謝謝分享
Faithe avatar
By Faithe
at 2017-11-18T14:37
太有用了,感謝分享
Andy avatar
By Andy
at 2017-11-20T21:02
好文 推
Rachel avatar
By Rachel
at 2017-11-23T17:43
這文為啥沒推爆
Hardy avatar
By Hardy
at 2017-11-27T20:00
給你關鍵字: HttpRequest 不用謝了
William avatar
By William
at 2017-11-29T18:57
大推
Olivia avatar
By Olivia
at 2017-11-30T13:03
感謝分享
Daniel avatar
By Daniel
at 2017-12-03T01:26
Good
Heather avatar
By Heather
at 2017-12-05T19:01
謝謝分享
Edwina avatar
By Edwina
at 2017-12-09T15:36
感謝分享
Una avatar
By Una
at 2017-12-11T11:42
感謝分享~ 用 Office2013 64bit 的Refresh會出錯說
不知道有沒有office 版本或是32.64的版本限制?
Ida avatar
By Ida
at 2017-12-13T04:03
感謝分享!
Gary avatar
By Gary
at 2017-12-14T10:00
好文推薦,感謝分享
Franklin avatar
By Franklin
at 2017-12-18T15:59
好像不能用 按下去所有資料都不見了
Charlotte avatar
By Charlotte
at 2017-12-21T10:52
這個有點屌
Thomas avatar
By Thomas
at 2017-12-23T13:55
謝謝分享
Jacob avatar
By Jacob
at 2017-12-24T20:36
不得不推 讚!

外資買權證

Sandy avatar
By Sandy
at 2017-11-08T23:00
請問一下外資買權證的資料是哪裡查來的? 今天有篇新聞 外資晶電兩手策略 砍現貨買10檔權證 三大法人賣超28.7億元 其中有段寫到 外資集中市場買超第 1 名為友達.... 第 4 名晶電元富 75 購 02,買超 5700 張,第 5 名晶電 群益 76 購 01,買超 4399 張。 實際上查了晶 ...

2367燿華 多

Linda avatar
By Linda
at 2017-11-08T22:54
作者: Yultuz (徐公子) 看板: Stock 標題: 2367燿華 多 時間: Wed Nov 8 22:32:57 2017 ------------------------------------------------------------------------- 1.發文前請先詳閱[標 ...

3094 聯傑 (長線多)

Daniel avatar
By Daniel
at 2017-11-08T22:04
------------------------------------------------------------------------- 1.發文前請先詳閱[標的]分類發文規範,未依規範發文將受處份。 2.發標的文未充實內文,多空理由不充實者,板規1-1-5或4-4處份 3.進退場機制若非長期投資, ...

金可ky 8406

Jessica avatar
By Jessica
at 2017-11-08T21:53
------------------------------------------------------------------------- 1.發文前請先詳閱[標的]分類發文規範,未依規範發文將受處份。 2.發標的文未充實內文,多空理由不充實者,板規1-1-5或4-4處份 3.進退場機制若非長期投資, ...

環署明年開徵工廠PM2.5空污費 高市年收增

Valerie avatar
By Valerie
at 2017-11-08T21:39
1.原文連結: http://news.ltn.com.tw/news/life/breakingnews/2246612 2.原文內容: 環署明年開徵工廠PM2.5空污費 高市年收增1.4億元 〔記者陳文嬋/高雄報導〕環保署明年將開徵工廠PM2.5空污費,高市列管428家工廠,預 估每年可加收1.4 ...