我是对象的新手,除了htm.getelementsbyid
之外我完成了所有这些工作。当我到达rows.length
时,我收到错误:
运行时错误91,未设置对象变量
Sub get_correct_address()
Dim x As Long, y As Long
Dim htm As Object
Set htm = CreateObject("htmlFile")
row = 6
StrNumCol = 4
StrNamCol = 5
StrTypCol = 6
CityCol = 7
ZipCol = 3
StateCol = 8
With CreateObject("msxml2.xmlhttp")
.Open "GET", "http://production.shippingapis.com/ShippingAPITest.dll?API=Verify&XML= <AddressValidateRequest%20USERID=""968APPRA1046"">" & _
"<Address>" & _
"<Address1></Address1>" & _
"<Address2>" & CStr(Sheets("import").Cells(row, StrNumCol).value) + " " + Sheets("import").Cells(row, StrNamCol).value + " " + Sheets("import").Cells(row, StrTypCol).value & "</Address2>" & _
"<City>" & CStr(Sheets("import").Cells(row, CityCol).value) & "</City>" & _
"<State>" & CStr(Sheets("import").Cells(row, StateCol).value) & "</State>" & _
"<Zip5></Zip5>" & _
"<Zip4>" & CStr(Sheets("import").Cells(row, ZipCol).value) & "</Zip4>" & _
"</Address>" & _
"</AddressValidateRequest>" & _
""", False"
.send
htm.body.innerhtml = .responsetext
End With
With htm.getelementbyid("comps-results")
For x = 0 To .Rows.length - 1
For y = 0 To .Rows(x).Cells.length - 1
Sheets(1).Cells(x + 1, y + 1).value = .Rows(x).Cells(y).innertext
Next y
Next x
End With
'http://production.shippingapis.com/ShippingAPITest.dll?API=Verify&XML=<AddressValidateRequest%20USERID="xxxxxxxxxxxx">
End Sub
答案 0 :(得分:1)
我似乎无法在代码中的地址处打开对象(它必须受到保护)。也就是说,最可能的问题是htm.getelementbyid(&#34; comps-results&#34;)什么都没有返回。验证值并尝试使用F8逐步执行代码并验证.Rows.Length是否有值。如果没有,问题可能在于您正在引用的元素(&#34; comps-result&#34;)。还要验证.Rows.Length是你想要的。也许你想要Rows.Count?
With htm.getelementbyid("comps-results")
For x = 0 To .Rows.Count - 1
For y = 0 To .Rows(x).Cells.Count - 1
Sheets(1).Cells(x + 1, y + 1).Value = .Rows(x).Cells(y).innertext
Next y
Next x
End With