Это с веб-сайта, посвященного производству систем солнечной энергии, я пытаюсь получить общую мощность каждого месяца для проекта, первый месяц «январь» возвращает общую мощность, а второй - нет. Вот часть моего кода. Я начал писать коды на vba менее чем за год go, я перепробовал все, что узнал до сих пор, но ничего не работает.
If Not VBA.IsNull(IE.document.getElementById("ctl00_childPanel_MM")) Then
'Day
Dim htmlSelect1
'Month
Dim htmlSelect2
'Year
Dim htmlSelect3
Set htmlSelect1 = IE.document.getElementById("ctl00_childPanel_DD")
Set htmlSelect2 = IE.document.getElementById("ctl00_childPanel_MM")
Set htmlSelect3 = IE.document.getElementById("ctl00_childPanel_YYYY")
htmlSelect1.Value = TextBox1.Value
htmlSelect2.Value = TextBox2.Value
htmlSelect3.Value = TextBox3.Value
Else
MsgBox "Element not found.", vbExclamation
End If
While IE.ReadyState <> 4
DoEvents
Wend
'On click pop-up a table with the values
IE.document.getElementById("ctl00_childPanel_Button1").Click
Application.Wait Now + TimeSerial(0, 0, 10)
Set tbl = IE.document.getElementById("table-pre")
' Find value of January and assign the value to TextBox4
For Each td In tbl.getElementsByTagName("td")
If td.innerText = "0.01" Then
Me.TextBox4.Value = td.NextSibling.innerText
End If
Next
' Go to the next month
IE.navigate "javascript:hide()"
htmlSelect2.Value = f
'On click pop-up a table with the values
IE.document.getElementById("ctl00_childPanel_Button1").Click
Application.Wait Now + TimeSerial(0, 0, 10)
'HERE IS THE PROBLEM, EVEN WITH THE FEBRUARY TABLE OPENED
'IT DOES NOT FIND OR ASSIGN THE VALUE TO THE TEXTBOX5
With tbl
For Each td In tbl.getElementsByTagName("td")
If td.innerText = "0.01" Then
Me.TextBox5.Value = td.NextSibling.innerText
End If
Next
End With
End With
Set IE = Nothing
Я нашел способ обойти это во-первых, я должен был выполнить «Конец с» после получения первого значения и повторного запуска «С IE» для каждого месяца.
IE.document.getElementById("ctl00_childPanel_Button1").Click
Application.Wait Now + TimeSerial(0, 0, 10)
Set tbl = IE.document.getElementById("table-pre")
' Find value of January and assign the value to TextBox4
For Each td In tbl.getElementsByTagName("td")
If td.innerText = "0.01" Then
Me.TextBox4.Value = td.NextSibling.innerText
End If
Next
End With
'February
With IE
' Go to the next month
IE.navigate "javascript:hide()"
htmlSelect2.Value = february
IE.document.getElementById("ctl00_childPanel_Button1").Click
Application.Wait Now + TimeSerial(0, 0, 10)
Set tbl = IE.document.getElementById("table-pre")
For Each td In tbl.getElementsByTagName("td")
If td.innerText = "0.01" Then
Me.TextBox5.Value = td.NextSibling.innerText
End If
Next
End With