我一直在研究这个VBA代码很长一段时间。目标是从我的Excel文档中复制一些内容,在线搜索它,然后从HTML代码中取回某些内容。我不断收到一个错误代码,指出“Object Required”,有时它会显示“Object variable or With block variable not set。”。这是所有的重点放在行“set elementTWO = elementONE.Item(i).innerText我很困惑这个对象需要错误VBA
我试过删除单词”设置“我试图改变elementTWO到一个字符串。 。接下来循环不会让我做“出境”。它返回一个错误。我已经尝试了一些其他的事情都无济于事。任何帮助是极大的赞赏
Option Explicit
Option Compare Text
Public Enum READYSTATE
READYSTATE_UNINITIALIZED = 0
READYSTATE_LOADING = 1
READYSTATE_LOADED = 2
READYSTATE_INTERACTIVE = 3
READYSTATE_COMPLETE = 4
End Enum
Sub GetCategory()
Dim RowNo, ColNo, i As Integer
Dim Parent, Item, URL1, URL2, URL3 As String
Dim objHTML As Object
Dim elementONE As Object
Dim elementTWO As String
RowNo = 3
ColNo = 5
URL1 = "http://www.infores.com/public/us/knowledgegroup/resources/resources.pli?defaultDataType=&pageid=validatorresults&upc1="
URL2 = "&upc2="
URL3 = "&submitupc=find+it%21"
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With Worksheets(1)
While RowNo <= 5
Parent = Cells(RowNo, ColNo)
Item = Cells(RowNo, ColNo + 1)
With ie
.navigate URL1 & Parent & URL2 & Item & URL3
.Visible = False
'Delay while IE loads
Do While (ie.Busy Or ie.READYSTATE <> READYSTATE.READYSTATE_COMPLETE)
DoEvents
Loop
'Put html code in document object
Set objHTML = .document
DoEvents
End With
Set elementONE = objHTML.getElementsByTagName("TD") 'Break Down HTML code
For i = 1 To elementONE.Length
elementTWO = elementONE.Item(i).innerText
If elementTWO = "Description" Then 'Find the Category
Cells(RowNo, ColNo + 4) = elementONE.Item(i + 1).innerText 'Put Category into excel
End If
Next i
DoEvents
ie.Quit
RowNo = RowNo + 1
Wend
End With
End Sub
声明所有变量:'D IM objHTML,elementONE,elementTWO作为Object' 变暗的第一至变种,然后elementTwo作为和对象,这很可能不是你想要的。 – user1336827
对不起,我不完全确定你的意思。我试图单独声明所有的变量,但我得到了相同的结果。 – Sam
elementONE.Item(i).innerText的类型是什么?它是一个对象吗?它看起来好像是一个字符串。看起来好像你想Dim elementTWO为String,因为你将它与下一行的字符串进行比较。 – user1336827