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

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

--

All Comments

Mason avatarMason2017-11-27
補充,前一個版本可參考 #1Q0noLYE (Stock)
Carolina Franco avatarCarolina Franco2017-12-02
先幫推
Andrew avatarAndrew2017-12-06
先推 謝大大
Hedy avatarHedy2017-12-09
Emma avatarEmma2017-12-12
謝謝
Noah avatarNoah2017-12-16
樓主好人 一生平安
Irma avatarIrma2017-12-17
Doris avatarDoris2017-12-18
厲害
Elvira avatarElvira2017-12-19
感謝
Tracy avatarTracy2017-12-23
樓主好人
Daph Bay avatarDaph Bay2017-12-26
推一個
Carol avatarCarol2017-12-29
Agatha avatarAgatha2018-01-02
Joe avatarJoe2018-01-05
感動推
Ina avatarIna2018-01-08
厲害
Rebecca avatarRebecca2018-01-10
推推
Candice avatarCandice2018-01-13
Anthony avatarAnthony2018-01-15
先推
Valerie avatarValerie2018-01-20
Lauren avatarLauren2018-01-23
感動推
Heather avatarHeather2018-01-25
Puput avatarPuput2018-01-26
Lucy avatarLucy2018-01-31
多謝好心人
Lucy avatarLucy2018-02-01
Candice avatarCandice2018-02-03
推。謝謝你
Heather avatarHeather2018-02-04
大推.好人
William avatarWilliam2018-02-08
推好心!
Rosalind avatarRosalind2018-02-13
感謝分享
Connor avatarConnor2018-02-17
感謝分享~~
Charlotte avatarCharlotte2018-02-22
推謝謝~
Jacky avatarJacky2018-02-22
Eartha avatarEartha2018-02-27
好文必推
Vanessa avatarVanessa2018-03-03
有神必推!!!
Ina avatarIna2018-03-07
好強大 不過看不懂Q_Q
Rachel avatarRachel2018-03-11
貪心的問一下請問現金股利跟殖利率怎麼讓他跑出來..
.輸入代碼之後後面沒顯示
Hedwig avatarHedwig2018-03-12
Olivia avatarOlivia2018-03-15
Ingrid avatarIngrid2018-03-17
讚讚讚
John avatarJohn2018-03-21
感恩大大
Anonymous avatarAnonymous2018-03-25
好用心
Olga avatarOlga2018-03-26
股海良心
Delia avatarDelia2018-03-28
Yuri avatarYuri2018-04-01
Sandy avatarSandy2018-04-04
Zanna avatarZanna2018-04-06
推一個
Andy avatarAndy2018-04-08
厲害
Noah avatarNoah2018-04-13
Elizabeth avatarElizabeth2018-04-17
有下有推 感謝
Ivy avatarIvy2018-04-21
太感謝了!
Quanna avatarQuanna2018-04-26
有下有推!! 謝謝~~
Kyle avatarKyle2018-04-30
感謝大大
Quanna avatarQuanna2018-05-02
Freda avatarFreda2018-05-04
祝福好人大大一生平安~
Frederic avatarFrederic2018-05-06
感謝大大讚嘆大大
Enid avatarEnid2018-05-11
推謝
Thomas avatarThomas2018-05-14
推分享!
Doris avatarDoris2018-05-15
推一個
Quanna avatarQuanna2018-05-18
謝謝分享~
Valerie avatarValerie2018-05-22
大大太厲害了,想請問是不是興櫃才會更新日期呢??我
Hedwig avatarHedwig2018-05-23
看興櫃的有()TODAY指令,但上市跟上櫃的則沒有