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

strainny wrote:
(1)一個是PasteSpecial的錯誤 (2)一個是很低的機率下sheets("tmp").cells(1,1)內容會出現兩個方框


(1)
因為程式碼中有加上 DoEvents,所以程式執行中,可能您不小心點選了其它工作表
或是您其它的程式,有切換工作表

剪貼薄的方法,該工作表必需選取active + 要貼上資料的位置也要選取


(2)
也許查詢太頻繁,網頁暫時沒有回傳資料
可用if做個簡單除錯,例如:字串長度len(Table.innertext)、Table.innertext="某字串"



strainny wrote:
再回到Table.innerhtml看,我就看不懂了吃驚
(另外請教一下 為何不是抓取Table.innerText的資料不知)


以這個網頁來說,innertext是沒有排版過的資料,貼上後會連在一起
所以選innerhtml排版後的資料

您程式碼中把NoHTMLFormatting:=True刪掉不用,就是保持網頁格式(顏色…那些的)


如果您要把這種連在一起的字,改回逐格寫入
可參考這一篇ren1244高手,寫的dom範例(但windows + excel的版本組合要注意一下)
https://www.mobile01.com/topicdetail.php?f=511&t=6513748&p=1#84378198
strainny
好的 我在研究謝謝S大
[點擊下載]

請教大大,在這裡學到很多,現在被這網頁卡到了,要如何可以抓到內容嗎?懇請幫忙回覆
請教程式抓到空白,有辦法抓到內容嗎?還是我少打了那些 用F12 是可以看到回應


mike484 wrote:
請教程式抓到空白,有辦法抓到內容嗎?還是我少打了那些 用F12 是可以看到回應


少打了非常多,invest.wessiorfinance.com這個網站,需要模擬cookie才行
而且回傳資料的網址有2個











json資料的整理,請參考其它範例,自行練習一下
只需處理範例中的DecodeJson_a、DecodeJson_b

(點我看大圖)
snare wrote:
少打了非常多,invest...(恕刪)

感謝snare大大幫忙,問題解決了 還有個疑問要請教,程式跑出來的responsetext 貼到記事本會自動斷行(下面記事本) 跟F12回覆的資料有一點點點差異 (上面記事本) 貼到jsonedit 會跑不出來,有辦法不要自動跳行嗎?還是可以用函數去除跳行

snare
如果要responsetext的完整資料,請放到excel格子裡再copy,不要從即時運算視窗copy,即時運算視窗有字數限制,拿到是不完整的json,當然會出錯,另外原始、下載資料都沒有斷行的問題。
mike484
謝謝幫忙回覆 沒注意有字數限制
S大您好,
目前使用for迴圈抓公開觀測站數個月的股東資訊。
公開觀測站連結網址
目前第一筆都可以下載成功,
不過不知道為何在第2筆資料後 卻抓不到資料了,
是否能指點一下小弟,
謝謝~

另外第一筆下載的格式,也會與原網站格式不符,
在想是不是儲存格的切割方式不對,
目前也有點不著頭緒,
也能否幫忙指點一下,
謝謝~






[點擊下載]
strainny wrote:
目前第一筆都可以下載成功,
不過不知道為何在第2筆資料後 卻抓不到資料了



Set Table = Nothing
Set HTMLsourcecode = Nothing
Set GetXml = Nothing


Next z

Set Table = Nothing
Set HTMLsourcecode = Nothing
Set GetXml = Nothing






strainny wrote:
另外第一筆下載的格式,也會與原網站格式不符,
在想是不是儲存格的切割方式不對,


因為網頁有合併格子,所以在excel裡面標題位置會位移
可另外寫個小程式處理標題

或改用剪貼薄處理


Clipboard.settext HTMLsourcecode.body.innerhtml
Clipboard.putinclipboard

strainny
感謝s大,我再去看一下set nothing的定義。昨天也有想到用剪貼簿處理儲存格問題,不過似乎出錯,我在研究一下,感謝!祝 順心




[點擊下載]

Snare大神:

我又遇到了2個問題,Google不到我想到的方法,特來請教您,

1. 我想自定義1個圖表事件,單擊指定圖表時,能Msgbox圖表名稱

2. 我想把篩選器中的內容提取出來,可是網路上的教學都是重新對表格提取不重複值,

所以我使用了插入→表格方式,希望利用物件的屬性來獲取,可是還是卡關,

故特來請教您,有沒有更好的方法,

因為實務上我的表格會很大,就算是對數組循環,好像都是不夠聰明作法,感謝您

Dylan
S大您好,
發現一個網站 連結不變, 且F12竟也沒有流量再跑,
檢視網頁原始碼 更只有簡短的幾行。

是否能指導小弟, 如何抓取下連結公司的所有資料
連結網址
目前還在慢慢爬樓中(才爬到18頁),
若您之前有發過類似的 網頁 就請忽略 我再去拜讀大大您的文章,
謝謝~





snare
可改用selenium chromedriver,請參考1226樓
strainny
好的,謝謝版大
Dylan67 wrote:
1. 我想自定義1個圖表事件,單擊指定圖表時,能Msgbox圖表名稱


很奇怪的用途






'存檔後重開,程式碼才會生效
'放在thisworkbook

Option Explicit
Private Sub Workbook_Open()
Call Main
End Sub

'放在module1
Option Explicit
Dim Collect As New Collection

Sub Main()

Dim i As Integer

For i = 1 To ActiveWorkbook.Sheets.Count
Call Get_all_Chart(ActiveWorkbook.Sheets(i))
Next i

End Sub

Private Sub Get_all_Chart(sheet As Object)

Dim C_N As ChartName, c As ChartObject

For Each c In sheet.ChartObjects
Set C_N = New ChartName
Set C_N.Get_Chart = c.Chart
Collect.Add C_N
Next

End Sub


'放在物件類別模組,名稱=>ChartName
Option Explicit
Public WithEvents Get_Chart As Chart

Private Sub Get_Chart_Activate()

Range("a1") = Get_Chart.Name 'debug

'If Get_Chart.Name = "指定圖表名稱" Then
' MsgBox Get_Chart.Name
'End If

End Sub







Dylan67 wrote:
2. 我想把篩選器中的內容提取出來,可是網路上的教學都是重新對表格提取不重複值,


內建的“交叉分析篩選器”或“樞紐分析表”,就可以做出您要的功能

如果要用vba的話,大概像這一篇的範例

https://www.mobile01.com/topicdetail.php?f=511&t=5138523
Dylan67
您太厲害了,單擊指定圖表時,能Msgbox圖表名稱,最終是想快速切換多圖,不用一直下拉瀏覽,您給的範例比字典方法精簡,受教了


[點擊下載]

Snare大神:

我遇到了一個看似簡單的賦值問題,卻困擾了我一下午,

我找不到有什麼物件可以對.ThemeColor賦值,可是微軟說明是可以讀寫的,

再麻煩您幫我看一下,我Google到頭超暈,感謝

Dylan
snare
再仔細看一下我的回覆,不要有雙引號 "
Dylan67
啊,可以了,居然不是字串,太感謝您了,我還以為要什麼物件或API勒,我暈,祝您好眠
關閉廣告
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 156)

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