Хорошо, так что мой макрос VBA Excel тоскует по моему сайту, и с лендинга я направляю его на страницу поиска, но я получаю Эта ошибка после того, как IE попадает на страницу поиска. Я думал, что сброс objcollection на новой странице будет работать, но я не знаю, как установить фокус или выбрать новую страницу или что ... Я новичок в использовании VBA с IE для автоматизации, извините, если это супер очевидно.
Sub GoToWebsiteTest2()
Dim appIE As InternetExplorerMedium
Dim objElement As Object
Dim objCollection As Object
Set appIE = New InternetExplorerMedium
sURL = "https://example.login.aspx"
With appIE
.Navigate sURL
.Visible = True
End With
Do While appIE.Busy Or appIE.ReadyState <> 4
DoEvents
Loop
Set objCollection = appIE.Document.getElementsByTagName
'Set appIE = Nothing
appIE.Document.getElementById("txtUsername").Value = "user"
appIE.Document.getElementById("txtPassword").Value = "Pass"
appIE.Document.getElementById("btnLogin").Click
Do While appIE.Busy Or appIE.ReadyState <> 4
DoEvents
Loop
appIE.Navigate "https://example.Search.aspx"
Do While appIE.Busy Or appIE.ReadyState <> 4
DoEvents
Loop
Set objCollection = appIE.Document.getElementsByTagName
*appIE.Document.getElementById("txtNum").Value = "0000000"*
appIE.Document.getElementById("btnSearch").Click
End Sub
Я изменил это на это, и он работал отлично, элементы были в iframe
Sub GoToWebsiteTest2()
Dim appIE As InternetExplorerMedium
Dim objElement As Object
Dim objCollection As Object
Dim iframeDoc As MSHTML.HTMLDocument
Dim doc As MSHTML.HTMLDocument
Set appIE = New InternetExplorerMedium
sURL = "https://example.login.aspx"
With appIE
.Navigate sURL
.Visible = True
End With
Do While appIE.Busy Or appIE.ReadyState <> 4
DoEvents
Loop
Set objCollection = appIE.Document.getElementsByTagName
'Set appIE = Nothing
appIE.Document.getElementById("txtUsername").Value = "user"
appIE.Document.getElementById("txtPassword").Value = "Pass"
appIE.Document.getElementById("btnLogin").Click
Do While appIE.Busy Or appIE.ReadyState <> 4
DoEvents
Loop
appIE.Navigate "https://example.Search.aspx"
Do While appIE.Busy Or appIE.ReadyState <> 4
DoEvents
Loop
Set doc = appIE.Document
Set iframeDoc = doc.frames("EncJump").Document
iframeDoc.getElementById("txtNum").Value = "0000000"
iframeDoc.getElementById("btnSearch").Click
End Sub