我已經有了一個代碼,可以從Marketwatch.com網站上的表格中提取共同基金的返回數據,但似乎他們已經改變了頁面和表格的名稱, t似乎弄清楚了和/或提取數據。在HTML中查找表名
一個例子是:marketwatch.com/investing/fund/vfinx
我看來像表名class = "table.table.table--primary.align--right.c6.j-totalReturns"
不工作。我試過的只是「完全返回」,但那也沒有做到。
對此提出建議?謝謝!
編輯: 因此,這裏是多一點我用
Dim oHTML As Object
Dim oTable As Object
Dim x As Long
Dim Y As Long
Dim vData As Variant
Set oHTML = CreateObject("HTMLFile")
With CreateObject("WinHTTP.WinHTTPRequest.5.1")
.Open "GET", "http://www.marketwatch.com/investing/fund/" &
ActiveCell.Value, False
.send
oHTML.body.innerhtml = .responsetext
End With
For Each oTable In oHTML.Getelementsbytagname("table")
If oTable.classname = "fundstable" Then
ReDim vData(1 To oTable.Rows.Length, 1 To oTable.Rows(1).Cells.Length)
For x = 1 To UBound(vData)
For Y = 1 To UBound(vData, 2)
vData(x, Y) = oTable.Rows(x - 1).Cells(Y - 1).innertext
Next Y
Next x
With ActiveCell.Offset(1, 0)
.Resize(UBound(vData), UBound(vData, 2)).Value = vData
End With
Exit For
End If
Next oTable
Next Z
所以在紙張上的代碼,我想有幾個代號間隔十行下面開下來,我的宏將往下走,拉每個圖表,然後我有單元格參考被拉的數據。同樣,我唯一的問題是表格不再被命名爲「fundstable」。 再一次,你的方法有效,但我無法讓它乾淨地工作 - 即插入數據開始添加列(並因此移動其他單元格)。想法?
嘿約翰 - 再次感謝您爲我着想。您的解決方案完美運作瘋狂的事情是,我仍然無法弄清楚爲什麼我不能讓我的原始代碼工作,所以我更多地嘲笑它,而且我想我肯定在那裏有一些額外的空間或拼寫錯誤,因爲不知何故,現在「table.table.table - primary.align - right.c6.j-totalReturns」工作!所以現在至少我有兩個解決方案!再次感謝... – arl16