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

感謝snare大為了解決我的問題費心費力,真的是感激不盡!
bioleon69 wrote:
不知為何這禮拜忽然出現錯誤...(恕刪)


因為網頁改版






請看291樓blob url的說明
請改用294樓的程式寫法

Sub testT()


ttt = Timer

Dim HTMLsourcecode, Table, Clipboard As Object, stockID As String, URL As String, URL_a As String
Set HTMLsourcecode = CreateObject("htmlfile")
Set Clipboard = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
stockID = Sheets("工作表1").Cells(3, 3)



URL = "https://goodinfo.tw/StockInfo/StockList.asp?SHEET=現股當沖&MARKET_CAT=熱門排行&INDUSTRY_CAT=現股當沖張數"

URL_a = "https://goodinfo.tw/StockInfo/StockList.asp?"


With CreateObject("WinHttp.WinHttpRequest.5.1")
.Open "POST", URL, False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.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"
.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
.send

HTMLsourcecode.body.innerhtml = convertraw(.ResponseBody)

Set Table = HTMLsourcecode.getelementbyid("divStockList")

If Table.innertext = "查無資料" Then
Sheets("工作表1").Cells(2, 3) = "查無資料"
Exit Sub
End If

With Clipboard
.SetText Table.innerhtml
.PutInClipboard
End With

With Sheets("工作表1")
.Select
.Cells.Clear
.Cells(1, 1).Select
.PasteSpecial NoHTMLFormatting:=True
.Columns.AutoFit
'.Cells(1, 1) = Split(HTMLsourcecode.all.tags("table")(53).innertext, " ")(1)
'.Cells(2, 1).Select
'MsgBox .Cells(1, 1) & "下載時間" & Round(Timer - ttt, 2) & "秒", vbOKOnly, "Report"
End With
End With


Set HTMLsourcecode = Nothing
Set Table = Nothing
Set Clipboard = Nothing



End Sub
謝謝師傅提點

以及

師兄弟leelee1leelee1

小弟再研究看看是否可行
這寫法是之前小弟一直排斥的那種
因為師傅之前分享這新招
一看就感覺蠻高端的
怕自己沒辦法XDD

等我測試看看...

snare大大你好,請問一下,上面那個網址抓” txtStockListData”這個,怎貼出來的代碼及名稱會再重複一次?
leelee1leelee1 wrote:
上面那個網址抓” txtStockListData”這個,怎貼出來的代碼及名稱會再重複一次?...(恕刪)


不好意思,我看不懂您在問什麼
snare大大你好,不好意思,可能寫得太簡略,造成你的不便,先說抱歉,因為是有先按你在#402說明參改程式內容,所以在程式先用 Set Table = HTMLsourcecode.getelementbyid("txtStockListData")
怎貼出來的”排名”代號”及”名稱”在後面又會再重複一次?
然後又發現用
Set Table = HTMLsourcecode.getelementbyid("divStockList")
就不會有這種情形?無法理解,所以想請你指導一下,謝謝。


排代號名稱市股價成交漲跌漲跌成交成交額當沖 現股 現股當沖買進額當沖賣出額當沖資券
名場日期價幅張數(百萬)日期當沖當沖率買進額當沖率賣出額當沖率總盈虧當沖
張數(%)(百萬)(%)(百萬)(%)(萬元)(%)
16153嘉聯益市5月10日56.60.10.1840,2302,2605月9日47,840612,65460.92,66161654
22353宏碁市5月10日23.70072,5141,7465月9日35,57439.283239.183739.4526
32313華通市5月10日33.80.61.8136,1661,2285月9日33,96947.81,13947.71,14147.8152
46182合晶櫃5月10日53.511.948,1932,5235月9日33,01645.71,76145.71,75745.6-475
53016嘉晶市5月10日46.22.555.8425,1721,1355月9日25,98356.91,12556.91,12957.1446
63090日電貿市5月10日79.10.60.7625,1242,0115月9日23,77165.81,90365.71,90665.8318
700637L元大滬深300正2市5月10日16.40.010.06118,6541,9615月9日22,36720.636720.536820.6107
82478大毅市5月10日76.66.99.929,6872,2095月9日19,82064.61,32864.31,33364.6555
92323中環市5月10日6.410.142.2387,6695715月9日15,74736.297.436.19836.458.5
102409友達市5月10日12.60028,5693615月9日14,75429.818829.918829.8-10.7
112405浩鑫市5月10日16.2-0.25-1.525,21584.95月9日14,41070.323870.323970.419.6
122601益航市5月10日13.20.050.3823,7783155月9日14,32337.219437.319437.1-56.2
133026禾伸堂市5月10日207.518.59.7926,0975,3135月9日13,99262.42,538622,55362.41,470






排代號名稱

16153嘉聯益
22353宏碁
32313華通
46182合晶
53016嘉晶
63090日電貿
700637L元大滬深300正2
82478大毅
92323中環
102409友達
112405浩鑫
122601益航
133026禾伸堂
141605華新
156173信昌電
162367燿華
172456奇力新


leelee1leelee1 wrote:
HTMLsourcecode.getelementbyid("txtStockListData")
怎貼出來的”排名”代號”及”名稱”在後面又會再重複一次?
然後又發現用
Set Table = HTMLsourcecode.getelementbyid("divStockList")
就不會有這種情形?無法理解,所以想請你指導一下,謝謝。...(恕刪)


很單純只是因為2個id 放的資料不一樣而己

我會選txtStockListData是因為只是範例,資料內,有標題,有資料筆數,方便大家看是在抓什麼資料
至於後面多列出的重複的排名,只是我偷懶,測試時沒有把表格拉到最下面,所以沒發現


divStockList,資料乾淨,只有表格內的資料
您知道還有一個divStockList可以用,也算是高手了
謝謝snare大大講解,我不是高手啦,我也是前不久發現有這個主題,然後慢慢觀看學習snare大大寫程式抓網頁技巧,還有其他愛好VBA程式人員所說的內容,還是希望snare大大能夠再多多教導,必盡這種方法也無書籍說明,只能多看多學,所以再次感謝大大,感恩。
謝謝師兄弟無私分享!!
謝謝師傅給予指導教學!!



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

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