(不定期更新)使用VBA解決 excel web 查詢無法匯入、匯入太慢的股市資料

kadyysc5044 wrote:
但我的程式只能抓到標題第一列第一列資料如下:
最近成交價/漲跌價差/當盤成交量…
其它資料皆抓不到,可否看看我的程式是哪有問題,謝謝。...(恕刪)


傳回值是json,沒辦法用table方式處理
而且這個範例在2017年就寫過了
網址、代號、下載方式,請參考170樓、219樓 =>TSE_OTC() 副程式
170樓regexp就不要用了,難度太高,只是介紹可用的方法而已
請參考219樓、585樓、(其它樓)的,callbyname範例

JackLoh wrote:
我想那個是java的資料
不知樓主有没有解 ?...(恕刪)


是的,json格式,不能用table方式處理

方法請google "Delphi json 解析",範例很多,寫法也比vba簡單多了
因為解json是 delphi內建的基本功能
不會像vba google不到什麼有用的範例

您的問題只是回傳資料的url弄錯了
twse下載網址請參考下面的vba範例

也可參考170樓、219樓,自行增加網址中的代號,可自定義想要的資料

activer wrote:
您好,基本市況資料...(恕刪)


感謝幫忙

不過,剛剛試了一下,網頁有改版了,不需要send 2次,用msxml2.xmlhttp也正常,程式碼可以短一些了




無排版功能範例
'========================================================
Sub get_twse()


Dim Jsondata As Object, DecodeJson, url As String, url_a As String, getxml As Object, temp
Set Jsondata = CreateObject("HtmlFile")
Set getxml = CreateObject("msxml2.xmlhttp")

Jsondata.write ”<script>document.JsonParse=function (s) {return eval(’(’ + s + ’)’);}</script>”
'Jsondata.write 這行程式碼,符號是全形字,複製後,請改成半形字

url = "http://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_1101.tw|tse_1101B.tw|tse_1102.tw|tse_1103.tw|tse_1104.tw|tse_1108.tw|tse_1109.tw|tse_1110.tw|&json=1&delay=0&_="
url_a = "http://mis.twse.com.tw/stock/group.jsp?ind=01&ex=tse&currPage=0&type=all"


With getxml
.Open "GET", url & UNIXTime, False
.setRequestHeader "Referer", url_a
.setRequestHeader "Cache-Control", "no-cache"
.setRequestHeader "Pragma", "no-cache"
.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
.send

Set DecodeJson = Jsondata.JsonParse(.responsetext)
Set temp = CallByName(DecodeJson, "msgArray", VbGet)
Debug.Print CallByName(temp, "0", VbGet).a
Debug.Print CallByName(temp, "0", VbGet).b
Debug.Print CallByName(CallByName(temp, "0", VbGet), "z", VbGet)
' callbyname 後面的 .代號 有分大小寫,z 會變大寫,所以不能用.z代替,需直接使用callbyname
'而且z不一定會出現,程式碼中,需另外加判斷,避免出錯,程式碼中斷
'其它會變大寫或消失的代號,也一樣方法


End With

Set DecodeJson = Nothing
Set Jsondata = Nothing
Set getxml = Nothing
set temp=Nothing

End Sub


Function UNIXTime()

UNIXTime = Round(((Date - #1/1/1970#) * 86400 + Timer) * 1000, 0)

End Function
'========================================================

snare wrote:
windows 7內建壓縮是 zip 格式,沒有加密功能...(恕刪)

感謝樓主指正,小弟可能錯認了ZIP檔是由win7所產生
謝謝樓主的回答

我想接下來有一堆要慢慢 Coding
更有一堆東東要學

有機會再請教

再次謝謝~~
請教樓主

我想抓 Yahoo 登入後的網頁
參數要怎麼給


謝謝~
JackLoh wrote:
請教樓主我想抓 Ya...(恕刪)



登入後的資料網頁、網址?
https://tw.stock.yahoo.com/portfolios


Yahoo 的投資組合


我想自已弄個看盤的
這樣2、30檔只要抓一個頁面就好


另外再請教一些
收盤價大家都是如何處理
2000多支股票
是每支都上去抓嗎 ?

凱基的下載的excel檔
轉檔也不是很理想

還有新上市或下市的股票
你都如何 update

謝謝你抽空回答







早上重新參考了你前面的作做法
看盤大致上没問題

不過你如果有空的話
還是請你聊聊像登入後的頁面
要如何處理 ?







JackLoh wrote:

我想抓 Yahoo 登入後的網頁
參數要怎麼給
...(恕刪)


JackLoh wrote:
https://tw.stock.yahoo.com/portfolios
Yahoo 的投資組合

我想自已弄個看盤的
這樣2、30檔只要抓一個頁面就好
...(恕刪)


登入後不需要參數,抓這個網址(後面的1可能會不同,我只測試1組投資組合)
https://tw.stock.yahoo.com/portfolios/1
.responsetext=>(html code + json),就是需要的資料
要正確解json,需先把那些html code分離才行






但是我認為是自找麻煩,因為yahoo的登入有密碼、簡訊、圖形、app認證…等等不同的方式
除了密碼可以用程式自動登入之外,其它都要人工先登入網頁
雖然簡訊也可以用程式回傳,可是很麻煩,還要寫一個手機的app


用這個網址,不用登入,省事多了,清單就放在程式、表格中就好,跑個迴圈就沒事了
https://tw.stock.yahoo.com/q/q?s=2412
可參考21樓


JackLoh wrote:

凱基的下載的excel檔
轉檔也不是很理想

...(恕刪)


轉檔??excel都可以直接打開,不用轉啊
凱基269樓有範例,存檔、不存檔都有

不然改用finance.yahoo.com
可參考271樓、272樓、274樓

剛剛試了一下範例還可正常使用


JackLoh wrote:
早上重新參考了你前面的作做法
看盤大致上没問題
...(恕刪)


認真寫的,跟我隨便寫的就是不一樣,畫面漂亮,不像我只是丟表格就好

那個z,要注意一下,有時不會出現



JackLoh wrote:
收盤價大家都是如何處理
2000多支股票
是每支都上去抓嗎 ?
...(恕刪)


JackLoh wrote:
還有新上市或下市的股票
你都如何 update
...(恕刪)



雖然這棟樓的程式跟股票有關,我也有買股票,但是本人對股票的認識只有買、賣
看不懂那一大堆報表、完全沒有分析…等等的知識
唯一有用到的是1樓、21樓的寫法,更新我的損益表而已
其它範例都是打發時間寫的

所以呢,這您可能要去投資理財區問問,我不懂




謝謝你的幫忙
受益良多
也省了很多冤枉路

畫面還在打樣中
退休的有的就是時間

這是剛剛的進度


snare wrote:
登入後不需要參數,...(恕刪)


樓主你好,之前分享給你的集保股權excel,你做成了自動化程式且存到資料庫,讓我節省了不少收集資料的時間,現在我有另一個excel要分享給你,做這個excel表的中心思想是結由觀察台灣五十成份股股價變化,獲利變化,均線變化,配息變化,淨值變化,去找出投資機會,當你手上觀察的標的一多時,你就不怕沒有投資機會,除了台灣五十成份股外,我還列中型一百成份股的變化,此部份資料收集的比較沒有這麼全。

目前收集資料的方式有一點笨,就是我會在奇摩股市投資組合中先輸入台灣五十成份股後,每天到上面複製貼上,至於個股獲利變化,股息變化,三年,十年線價,還是會到另一個網站一個一個輸入,雖然笨了點,但也不對觀察個股及增加投資機會還是蠻有幫助的。

台灣五十成份股股價_獲利_淨值_均線變化表




關閉廣告
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 144)

今日熱門文章 網友點擊推薦!