I get the error "Object does not support this property or method" (runtime error "438") when I try to use a variable to indicate which element in the list of classes to use.
For tdNum = 0 To 1000
If document.getElementsByClassName("prod-somm")(tdNum).getElementById("no-piece").innerText = ItemNbr Then
Cells(cell, 2).Value = document.getElementsByClassName("prod-somm")(tdNum).getElementById("col-action").getElementsByTagName("span")(0).innerText
Exit For
End If
Next tdNum
HTML:
<table align="center" cellspacing="0" class="prod-somm">
<tbody>
<tr>
<td align="center" rowspan="2" class="prod-somm-image"></td>
<td class="prod-somm-texte" valign="top">
<a href="/eng/Balance-of-system/Fuse-and-holder/Wohner-31110.000/p/284" id="no-piece">
90-FT017
<span class="prod-somm-sepno"></span>
<span id="panier_fab_284">Wohner</span>
<span id="panier_nomanufact_284">31110.000</span>
</a>
<a href="/eng/Balance-of-system/Fuse-and-holder/Wohner-31110.000/p/284"></a>
</td>
</tr>
<tr>
<td id="col-action">
<div class="prix">
<span id="panier_prix_284">10.43</span>
</div>
</td>
</tr>
</table>
The problem occurs when If document.getElementsByClassName("prod-somm")(tdNum).getElementById("no-piece").innerText = ItemNbr Then
The goal is for the program to complete the list of search results until it finds the item number that matches that in my Excel spreadsheet, and then take the price that matches that item.
EDIT:
Here is the whole code. I can do what I'm trying to do a little more clearly.
Option Explicit
Function priceGetRematek()
Dim XMLHttpRequest As New MSXML2.XMLHTTP60
Dim xhr As MSXML2.XMLHTTP60
Dim cell As Integer
Dim tdNum As Integer
Dim ItemNbr As String
Dim document As MSHTML.HTMLDocument
'Login to Rematek
With XMLHttpRequest
.Open "POST", "https://rematek-energie.com/eng/customer-login/account-authentication.php", False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send "name_se_connecter=se_connecter&zebra_honeypot_se_connecter=&courriel=rob@solacity.com&motpasse=password&connexion=Sign in"
End With
'Debug.Print XMLHttpRequest.responseText
'Get Price Element from HTML
Set xhr = New MSXML2.XMLHTTP60
For cell = 2 To 38
ItemNbr = Cells(cell, 1).Value
With xhr
.Open "POST", "https://rematek-energie.com/eng/pg/1/r/" & ItemNbr, False
.send
'Debug.Print xhr.responseText
If .readyState = 4 And .Status = 200 Then
Set document = New MSHTML.HTMLDocument
document.body.innerHTML = .responseText
For tdNum = 0 To 1000
If document.getElementsByClassName("prod-somm")(tdNum).getElementById("no-piece").innerText = ItemNbr Then
Cells(cell, 2).Value = document.getElementsByClassName("prod-somm")(tdNum).getElementById("col-action").getElementsByTagName("span")(0).innerText
Exit For
End If
Next tdNum
Else
MsgBox "Error" & vbNewLine & "Ready state: " & .readyState & vbNewLine & "HTTP request status: " & .Status
End If
End With
Next cell
End Function
source
share