抓股票公開資料 Excel v1.3 - 股票

By Brianna
at 2017-11-24T20:20
at 2017-11-24T20:20
Table of Contents
網誌好讀版:
http://kslman.blogspot.tw/2017/11/excalvbav13.html
--
插入股票公開資料的檔案我做了更新,供大家參考:
stock_sample_v1.3.xlsm
https://drive.google.com/open?id=1g5saowjYAeXNi73a0pss96-xZeXPUTXr
使用方式:
1. 「關注」的分頁C列填入股票代碼。
2. 點擊「關注」分頁左上「refresh」按鈕就可以刷新全部。
(判斷方式是16:00以前只刷新興櫃,16:00以後則全部更新。如果想假日更新最新的前一
交易日,可以改TWN分頁的A10~A12)
2017/12/1補充:我觀察交易日14:00上市上櫃也都有資料了,有需要可以自己改成14:00
調整內容:
1. 新增更新全部分頁的方式
2. 修正了櫃買中心的興櫃csv連結為:
http://www.gretai.org.tw/storage/emgstk/ch/new.csv
目前問題:
1. 興櫃股票我抓的政府資料開放平臺的資料沒有前一天價格,所以沒有辦法算漲跌、漲
跌幅和昨收。(如果有人知道哪邊抓的資料有漲跌或前一天價格可以跟我說一下)
2. P/E只有上市有。
3. 美股不知道哪邊有資料,有人知道那邊有美股類似證交所這樣一個表有全部股價資料
的網站嗎?
新增的巨集內容如下。
Private Sub CommandButton1_Click()
Sheets("TWN").Select
'宣告變數
Dim QuerySheet As Worksheet
Dim DataSheet As Worksheet
Dim qurl As String
Dim NOW, BN, LTH As Long
NOW = Sheets("TWN").Range("A4")
BN = Sheets("TWN").Range("A9")
LTH = Sheets("TWN").Range("A8")
'告訴Excel不要每更新一格就重新計算
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
Set DataSheet = ActiveSheet
qurl = "http://www.gretai.org.tw/storage/emgstk/ch/new.csv"
'選擇TWN sheet
Sheets("TWN").Range("B:Z").Clear
If NOW >= BN Then
If LTH < 16 Then
'如果時間是16:00之前
'抓取資料(TWN sheet)
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
'切數據(TWN sheet)
Sheets("TWN").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
'否則(如果時間是16:00之後)
Else
'抓取資料(TWN sheet)
QueryQuote2:
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
'切數據(TWN sheet)
Sheets("TWN").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
'更新上一交易日(TWN sheet的BN變數)
Sheets("TWN").Range("A4:A7").Select
Selection.Copy
Sheets("TWN").Range("A9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
'選擇TWO sheet
Sheets("TWO").Select
'告訴Excel不要每更新一格就重新計算
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
qurl =
"http://www.tpex.org.tw/web/stock/aftertrading/otc_quotes_no1430/stk_wn1430_print.php?l=zh-tw&d="
+ Sheets("TWO").Range("A9") + "/" + Sheets("TWO").Range("A10") + "/" +
Sheets("TWO").Range("A11") + "&se=EW&s=0,asc,0"
Sheets("TWO").Range("B:Z").Clear
'抓取資料(TWO)
QueryQuote3:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl,
Destination:=Sheets("TWO").Range("B1"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
.RefreshStyle = xlInsertEntireRows
.Delete
End With
'讓Excel重新活回來,讓資料能夠顯示
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
'選擇TW sheet
Sheets("TW").Select
'將現在的工作表設為資料表
Set DataSheet = ActiveSheet
qurl =
"http://www.tse.com.tw/exchangeReport/MI_INDEX?response=csv&date=" +
Sheets("TW").Range("A9") + Sheets("TW").Range("A10") +
Sheets("TW").Range("A11") + "&type=ALLBUT0999"
Sheets("TW").Range("B:Z").Clear
'抓取資料(TW sheet)
QueryQuote4:
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
'切數據(TW sheet)
Sheets("TW").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 If
End If
'選擇關注 sheet
Sheets("關注").Select
End Sub
--
http://kslman.blogspot.tw/2017/11/excalvbav13.html
--
插入股票公開資料的檔案我做了更新,供大家參考:
stock_sample_v1.3.xlsm
https://drive.google.com/open?id=1g5saowjYAeXNi73a0pss96-xZeXPUTXr
使用方式:
1. 「關注」的分頁C列填入股票代碼。
2. 點擊「關注」分頁左上「refresh」按鈕就可以刷新全部。
(判斷方式是16:00以前只刷新興櫃,16:00以後則全部更新。如果想假日更新最新的前一
交易日,可以改TWN分頁的A10~A12)
2017/12/1補充:我觀察交易日14:00上市上櫃也都有資料了,有需要可以自己改成14:00
調整內容:
1. 新增更新全部分頁的方式
2. 修正了櫃買中心的興櫃csv連結為:
http://www.gretai.org.tw/storage/emgstk/ch/new.csv
目前問題:
1. 興櫃股票我抓的政府資料開放平臺的資料沒有前一天價格,所以沒有辦法算漲跌、漲
跌幅和昨收。(如果有人知道哪邊抓的資料有漲跌或前一天價格可以跟我說一下)
2. P/E只有上市有。
3. 美股不知道哪邊有資料,有人知道那邊有美股類似證交所這樣一個表有全部股價資料
的網站嗎?
新增的巨集內容如下。
Private Sub CommandButton1_Click()
Sheets("TWN").Select
'宣告變數
Dim QuerySheet As Worksheet
Dim DataSheet As Worksheet
Dim qurl As String
Dim NOW, BN, LTH As Long
NOW = Sheets("TWN").Range("A4")
BN = Sheets("TWN").Range("A9")
LTH = Sheets("TWN").Range("A8")
'告訴Excel不要每更新一格就重新計算
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
Set DataSheet = ActiveSheet
qurl = "http://www.gretai.org.tw/storage/emgstk/ch/new.csv"
'選擇TWN sheet
Sheets("TWN").Range("B:Z").Clear
If NOW >= BN Then
If LTH < 16 Then
'如果時間是16:00之前
'抓取資料(TWN sheet)
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
'切數據(TWN sheet)
Sheets("TWN").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
'否則(如果時間是16:00之後)
Else
'抓取資料(TWN sheet)
QueryQuote2:
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
'切數據(TWN sheet)
Sheets("TWN").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
'更新上一交易日(TWN sheet的BN變數)
Sheets("TWN").Range("A4:A7").Select
Selection.Copy
Sheets("TWN").Range("A9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
'選擇TWO sheet
Sheets("TWO").Select
'告訴Excel不要每更新一格就重新計算
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
'將現在的工作表設為資料表
qurl =
"http://www.tpex.org.tw/web/stock/aftertrading/otc_quotes_no1430/stk_wn1430_print.php?l=zh-tw&d="
+ Sheets("TWO").Range("A9") + "/" + Sheets("TWO").Range("A10") + "/" +
Sheets("TWO").Range("A11") + "&se=EW&s=0,asc,0"
Sheets("TWO").Range("B:Z").Clear
'抓取資料(TWO)
QueryQuote3:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl,
Destination:=Sheets("TWO").Range("B1"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
.RefreshStyle = xlInsertEntireRows
.Delete
End With
'讓Excel重新活回來,讓資料能夠顯示
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
'選擇TW sheet
Sheets("TW").Select
'將現在的工作表設為資料表
Set DataSheet = ActiveSheet
qurl =
"http://www.tse.com.tw/exchangeReport/MI_INDEX?response=csv&date=" +
Sheets("TW").Range("A9") + Sheets("TW").Range("A10") +
Sheets("TW").Range("A11") + "&type=ALLBUT0999"
Sheets("TW").Range("B:Z").Clear
'抓取資料(TW sheet)
QueryQuote4:
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
'切數據(TW sheet)
Sheets("TW").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 If
End If
'選擇關注 sheet
Sheets("關注").Select
End Sub
--
Tags:
股票
All Comments

By Mason
at 2017-11-27T20:42
at 2017-11-27T20:42

By Carolina Franco
at 2017-12-02T13:20
at 2017-12-02T13:20

By Andrew
at 2017-12-06T03:21
at 2017-12-06T03:21

By Hedy
at 2017-12-09T09:33
at 2017-12-09T09:33

By Emma
at 2017-12-12T00:44
at 2017-12-12T00:44

By Noah
at 2017-12-16T08:32
at 2017-12-16T08:32

By Irma
at 2017-12-17T06:58
at 2017-12-17T06:58

By Doris
at 2017-12-18T04:42
at 2017-12-18T04:42

By Elvira
at 2017-12-19T16:01
at 2017-12-19T16:01

By Tracy
at 2017-12-23T06:45
at 2017-12-23T06:45

By Daph Bay
at 2017-12-26T21:05
at 2017-12-26T21:05

By Carol
at 2017-12-29T19:31
at 2017-12-29T19:31

By Agatha
at 2018-01-02T09:36
at 2018-01-02T09:36

By Joe
at 2018-01-05T10:28
at 2018-01-05T10:28

By Ina
at 2018-01-08T22:45
at 2018-01-08T22:45

By Rebecca
at 2018-01-10T13:02
at 2018-01-10T13:02

By Candice
at 2018-01-13T08:04
at 2018-01-13T08:04

By Anthony
at 2018-01-15T08:27
at 2018-01-15T08:27

By Valerie
at 2018-01-20T07:51
at 2018-01-20T07:51

By Lauren
at 2018-01-23T10:54
at 2018-01-23T10:54

By Heather
at 2018-01-25T05:13
at 2018-01-25T05:13

By Puput
at 2018-01-26T18:57
at 2018-01-26T18:57

By Lucy
at 2018-01-31T02:29
at 2018-01-31T02:29

By Lucy
at 2018-02-01T09:55
at 2018-02-01T09:55

By Candice
at 2018-02-03T19:05
at 2018-02-03T19:05

By Heather
at 2018-02-04T08:11
at 2018-02-04T08:11

By William
at 2018-02-08T16:20
at 2018-02-08T16:20

By Rosalind
at 2018-02-13T09:43
at 2018-02-13T09:43

By Connor
at 2018-02-17T17:37
at 2018-02-17T17:37

By Charlotte
at 2018-02-22T16:26
at 2018-02-22T16:26

By Jacky
at 2018-02-22T18:10
at 2018-02-22T18:10

By Eartha
at 2018-02-27T04:32
at 2018-02-27T04:32

By Vanessa
at 2018-03-03T01:52
at 2018-03-03T01:52

By Ina
at 2018-03-07T04:01
at 2018-03-07T04:01

By Rachel
at 2018-03-11T16:52
at 2018-03-11T16:52

By Hedwig
at 2018-03-12T13:54
at 2018-03-12T13:54

By Olivia
at 2018-03-15T09:35
at 2018-03-15T09:35

By Ingrid
at 2018-03-17T07:38
at 2018-03-17T07:38

By John
at 2018-03-21T05:27
at 2018-03-21T05:27

By Anonymous
at 2018-03-25T15:28
at 2018-03-25T15:28

By Olga
at 2018-03-26T10:31
at 2018-03-26T10:31

By Delia
at 2018-03-28T11:55
at 2018-03-28T11:55

By Yuri
at 2018-04-01T11:07
at 2018-04-01T11:07

By Sandy
at 2018-04-04T11:25
at 2018-04-04T11:25

By Zanna
at 2018-04-06T18:30
at 2018-04-06T18:30

By Andy
at 2018-04-08T04:56
at 2018-04-08T04:56

By Noah
at 2018-04-13T00:19
at 2018-04-13T00:19

By Elizabeth
at 2018-04-17T06:04
at 2018-04-17T06:04

By Ivy
at 2018-04-21T17:58
at 2018-04-21T17:58

By Quanna
at 2018-04-26T00:17
at 2018-04-26T00:17

By Kyle
at 2018-04-30T22:30
at 2018-04-30T22:30

By Quanna
at 2018-05-02T15:14
at 2018-05-02T15:14

By Freda
at 2018-05-04T20:15
at 2018-05-04T20:15

By Frederic
at 2018-05-06T16:35
at 2018-05-06T16:35

By Enid
at 2018-05-11T11:01
at 2018-05-11T11:01

By Thomas
at 2018-05-14T05:24
at 2018-05-14T05:24

By Doris
at 2018-05-15T07:10
at 2018-05-15T07:10

By Quanna
at 2018-05-18T06:32
at 2018-05-18T06:32

By Valerie
at 2018-05-22T08:03
at 2018-05-22T08:03

By Hedwig
at 2018-05-23T17:09
at 2018-05-23T17:09
Related Posts
涉炒作奧斯特股價翻倍檢調搜索約談15炒手

By Elvira
at 2017-11-24T19:25
at 2017-11-24T19:25
6168 宏齊

By Jake
at 2017-11-24T18:57
at 2017-11-24T18:57
宏碁三大法人持股比重 來到新高

By Emma
at 2017-11-24T18:22
at 2017-11-24T18:22
3406玉晶光自結

By Necoo
at 2017-11-24T16:16
at 2017-11-24T16:16
高價股買賣零股會有難度嗎

By Joe
at 2017-11-24T15:54
at 2017-11-24T15:54