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

版主你好:
我要可以寫讀取一年的...歷史股價的VBA
我卡在時間如何選設一年時間[如下圖],謝謝
https://invest.cnyes.com/twstock/TWS/9937/history
g80860 wrote:
我要可以寫讀取一年的...歷史股價的VBA
我卡在時間如何選設一年時間[如下圖],謝謝
https://invest.cnyes.com/twstock/TWS/9937/history


歷史股價建議可在 finance.yahoo.com 下載
271、272、274樓範例
(範例中的crumbkey用不到,yahoo已取消,因不影響下載,所以沒改)


如果要從cnyes下載,方法同274樓







'一、get只需一次,不用取key
'二、url 結束日期在前(日期要多加一天),開始在後,UnixTime計算同274樓
'三、decodejson物件名稱(c、h、l、o、t、v、vwap),名稱請自行修改,分類寫法同274樓


(點我看大圖,這行urL是圖片,請手動輸入)



Set Xmlhttp = CreateObject("WinHttp.WinHttpRequest.5.1")
With Xmlhttp
.Open "GET", Url, False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send

Set DecodeJson = Jsondata.JsonParse(.responsetext)




g80860
謝謝版主,感恩.
Snare 大,借您的頁面問網友一個問題,謝謝。

個人會透過VBA抓取損益表,資產負債表下來看,
但今天常用的永豐金改網址,不曉得改到哪了,
也不曉得是否會再改回來,
請問各位大大是否有其他網址可以下載相關資料。
cji3cj6xu6 wrote:
但今天常用的永豐金改網址,不曉得改到哪了


一、打開chrome => 按 F12 => 按停止錄製(右邊那個是清除)




二、進去永豐金網站,開好您要的資產負債表



三、按開始錄製,順便按一下清除,讓錄製畫面比較乾淨
這時開始用網頁中的選單,例如上圖中季表=>改選成年表
選完後,按停止錄製,錄製畫面中第一個就是真實網址




中華電(2412) 資產負債簡表 年表
https://stockchannelnew.sinotrade.com.tw/z/zc/zcp/zcp.djhtm?a=2412&b=1&c=Y


中華電(2412) 資產負債簡表 季表
https://stockchannelnew.sinotrade.com.tw/z/zc/zcp/zcp.djhtm?a=2412&b=1&c=Q

除了網址不同,表格位置不同,基本上程式都不用修改
其它網址用同樣的方式找就行
Snare大大
我觀看了456樓的寫法
簡單想抓取所有基金的淨值
都無法完成~~

網址如下:
https://www.sitca.org.tw/ROC/Industry/IN2106.aspx?pid=IN2213_02

可以指導一下嗎??
拜託了

感激不盡~~
momolittle wrote:
我觀看了456樓的寫法
簡單想抓取所有基金的淨值
都無法完成~~

網址如下:
https://www.sitca.org.tw/ROC/Industry/IN2106.aspx?pid=IN2213_02


不錯喔,您有看文章…這個網站,確實是用456樓的寫法,而且一模一樣
您應該是弄錯參數,所以才不能下載



'請用456樓範例修改
'debug 那幾行刪掉,變數名稱請自行修改,沒用的變數可刪可不刪
'修改5個地方,其它程式碼不變
'受益憑證代號 基金統編(d、e欄),需另外轉成純文字格式,不然0會不見
'簡單一點的就是在數字前面加個 "'" & "00123456"


url = "https://www.sitca.org.tw/ROC/Industry/IN2106.aspx?pid=IN2213_02"

'……
'……
'……

'日期是8碼數字格式
StartDay = "20211118"

url_a = "&__VIEWSTATE=" & UrlEncode(vs) & _
"&__VIEWSTATEGENERATOR=" & vg & _
"&__EVENTVALIDATION=" & UrlEncode(ev) & _
"&ctl00%24ContentPlaceHolder1%24txtQ_Date=" & StartDay & _
"&ctl00%24ContentPlaceHolder1%24ddlQ_Comid=" & _
"&ctl00%24ContentPlaceHolder1%24BtnQuery=%E6%9F%A5%E8%A9%A2"

'……
'……
'……

Set Table = HtmlSourcecode.all.tags("table")(3).Rows


'……
'……
'……

temparray(I, j) = IIf(j = 3 Or j = 4, "'", "") & Table(I).Cells(j).innertext



snare wrote:
不錯喔,您有看文章…(恕刪)


果然成功了!!太感謝了~~~
沒想到snare大這麼晚不睡還來回覆我!
不過我在另一台電腦上執行
卻發生 "安全通道支援發生錯誤"
我查了一下可能是要改用改用MSXML2.XmlHttp
嘗試修改...
Set Xmlhttp = Server.CreateObject("MSXML2.XMLHTTP.6.0")

結果還是不行~

可以麻煩再幫我看看要如何修正呢?

謝謝~~
momolittle wrote:
不過我在另一台電腦上執行
卻發生 "安全通道支援發生錯誤"
我查了一下可能是要改用改用MSXML2.XmlHttp
嘗試修改...
Set Xmlhttp = Server.CreateObject("MSXML2.XMLHTTP.6.0")


CreateObject("WinHttp.WinHttpRequest.5.1") 出現安全通道支援發生錯誤
一、可能是作業系統太舊,例如:xp
二、可能裝了奇奇怪怪的防火牆、可能用跳板在上網
三、其它

5.1可以試試多加上一個參數(忘了在那一樓回答過,通常是不需要加的)
.Option(4) = 13056

加上797樓tls修正,但應該不是這個問題
這個網頁不需要修正tls

xp 系統,可用440樓方式,增加tls支援


另外,我程式碼只改CreateObject("msxml2.xmlhttp")其它原樣不動,測試是正常的

momolittle
感謝snare回答~的確有台是XP>< 我想可能還有Window更新的問題在,我決定還是換電腦好了~謝謝喔
snare哥你好!

可以請教幾個問題:
(1)在308樓將k線圖(走勢圖),製作一個整合的網頁,大概知道如何撰寫,
但是要將其他的圖也併入,如https://tw.stock.yahoo.com/quote/2379/revenue
年季月的營收圖也整合成一個網頁,卻找不到對應的js檔。
(2)使用clipboard的方式下載https://tw.stock.yahoo.com/quote/2379/revenue,如何設定參數"月季年",
抓取不同的table,有參考你寫的Get_Yahoo_dividend_clipboard,只是不會抓各別的"月季年"營收。
(2)https://tw.stock.yahoo.com/quote/2379/revenue可以使用jason的方式下載嗎?可以的話不曉得如何撰寫。


再麻煩大大幫忙,謝謝你
https://mis.taifex.com.tw/futures/VolatilityQuotes/
又來打擾版主,實在因為版主功力深厚,只能詢問請教版主大人:
如上網址(會跳出小畫面),小畫面它是每15秒自動更新新的資料.
我想寫個vba 自設每幾秒自動更新資料,滙入excel 內.請版主有空閒可以麻煩,我要如何寫出來.
感謝你.
關閉廣告
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 144)

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