yuehmao wrote:
,那就是這個例子中的 Table 其本質是否比較等同於 VBA 中的"陣列"一樣? 包括用法等等?
...(恕刪)
是的,用法一樣,只是要知道這個物件裡有什麼東西,才知道怎麼拿資料
以71樓範例來說

該網頁有2個表格
紅色範圍
Set Table = HTMLsourcecode.all.tags("table")(0).Rows
藍色範圍
Set Table = HTMLsourcecode.all.tags("table")(1).Rows
綠色範圍
因為合併格子的關係,會造成寬度(欄位)判斷錯誤
所以用第3列來決定,Table(2).Cells.Length
Set Table = HTMLsourcecode.all.tags("table")(1).Rows
這一行是指把網頁中第2個表格內的所有東西,設成一個集合物件
第1個table沒有任何意義,改成下面這樣也可以
Set aaabbbccc = HTMLsourcecode.all.tags("table")(1).Rows
改成 tags("image") 就是網頁中所有圖片集合(61樓範例)
要知道設成物件後 的table 或 aaabbbccc ,裡面有什麼資料可以拿
最簡單的就是在set = 的下一行設一個中斷,然後看區域變數視窗
可以看到table,把它展開,可以發現裡面有很多物件集合
要抓的資料就在裡面



不過,既然用法一樣那為什麼不直接填入就好
Range("a1:o29") = Table
因為這個物件集合除了表格之外,還包含著各種不同的資料,html語法、線條…等等一大堆
直接填入會變成這樣

所以才要用迴圈,只取出每格內的文字後,再填入excel
For i = 0 To Table.Length - 1
For j = 0 To Table(i).Cells.Length - 1
debug.print Table(i).Cells(j).innertext
Next j
Next i
table(i).cells(j)對應位置如下
注意一下這裡的.cells(j)不是excel的功能
是CreateObject("htmlfile")這個物件的
對照之後 table(9).cells(2),內容是14.30
所以如果只要某格的資料,也可以直接指定就好 aaabbbccc(10).cells(3),不需跑迴圈
