我正在研究VBA腳本,並且我被困在應該如此容易的事情上。無論如何,VBA代碼從sheet1中獲取成員編號,打開經過驗證的IE窗口,在成員編號中彈出,從HTML頁面中刪除某些表並將它們插入Sheet 2中。然後,它將轉到Sheet 1中的下一個成員編號。不過,我正在努力將刮取的數據轉化爲sheet2。當我運行代碼時,一切都按照計劃進行,除了每次都將所有內容插入到工作表2中的相同位置。所以當代碼完成時,我所擁有的是來自sheet1上最後一個成員的數據。使用VBA將抓取的HTML數據格式化爲excel - 將無法正確顯示
Option Explicit
Sub TableExample()
Dim IE As Object
Dim doc As Object
Dim strURL As String
Dim hicN As String
strURL = "exampleURL.com"
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = True
.navigate strURL
Do Until .ReadyState = 4: DoEvents: Loop
Do While .Busy: DoEvents: Loop
Set doc = IE.Document
Do Until IsEmpty(ActiveCell)
memNum = ActiveCell
doc.getelementbyid("claimNumber").Value = memNum
doc.all("submitBtn").Click
Do While .Busy: DoEvents: Loop
GetAllTables doc, memNum
ActiveCell.Offset(1, 0).Select
Loop
'.Quit
End With
End Sub
的GetAllTables方法 -
Sub GetAllTables(doc As Object, memNum As String)
' get all the tables from a webpage document, doc, and put them in a new worksheet
Dim ws As Worksheet
Dim rng As Range
Dim tbl As Object
Dim rw As Object
Dim cl As Object
Dim tabno As Long
Dim nextrow As Long
Dim I As Long
Set ws = Sheet2
For Each tbl In doc.getElementsByTagName("TABLE")
tabno = tabno + 1
If tabno = 11 Or tabno = 13 Or tabno = 16 Then
nextrow = nextrow + 1
Set rng = ws.Range("B" & nextrow)
'Debug.Print nextrow
rng.Offset(, -1) = memNum
For Each rw In tbl.Rows
For Each cl In rw.Cells
rng.Value = cl.outerText
Set rng = rng.Offset(, 1)
I = I + 1
Next cl
nextrow = nextrow + 1
Set rng = rng.Offset(1, -I)
I = 0
Next rw
End If
Next tbl
End Sub
這將有助於如果你能給出確切的網址 – Pedrumj