Executar uma função quando o site terminar de carregar.
Enviado: Seg Out 22, 2018 9:44 am
Bom dia pessoal!
Estou com uma dúvida em relação a uma macro. Resumidamente a mesma funciona da seguinte forma:
1 - Ao clicar no botão o aplicativo da internet explorer irá executar;
2 - Acessará o site "www.e-danfe.com.br"
3 - Digitará no espaço em branco a chave de acesso de uma nota fiscal;
4 - Clicará no botão para prosseguir.
Bom, eu gostaria de saber se existe alguma função que permita que "uma determinada função só seja executada quando o site terminar de carregar", este problema se deu por conta de que, quando eu preencho o campo com o número da chave de acesso e clico em prosseguir, ele demora um pouco para carregar a outra página. Eu consegui suprir esta necessidade usando a função "Application.wait", porém, ela não foi muito viável pois, quando a internet fica um pouco lenta a função "detecta" isto, fazendo com que a função continue e acaba por "quebrar" a macro.
Segue abaixo a macro:
Private Sub CommandButton1_Click()
Dim IE As Object
Dim Button As Object
Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
'---------------------------
For i = 2 To 1000
If Cells(i, 2) <> "" Then
With IE
.Visible = True
.Navigate ("www.e-danfe.com")
While .busy Or .readystate <> 4:
DoEvents:
Wend
.Document.getelementbyid("chave-input").Focus
.Document.getelementbyid("chave-input").Value = Cells(i, 2)
.Document.all("continuarAba1").Click
While .busy Or .readystate <> 4:
DoEvents:
Wend
Debug.Print .locationURL
End With
'---------------------------
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 5
newSecond2 = Second(Now()) + 20
waitTime = TimeSerial(newHour, newMinute, newSecond)
waitTime2 = TimeSerial(newHour, newMinute, newSecond2)
Application.Wait waitTime
'---------------------------
For Each Button In IE.Document.GetElementsByClassName("download-nf btn btn-success")
Button.Click
Next
Application.Wait waitTime2
Application.SendKeys "%s", True
'---------------------------
Else
MsgBox "Processo conclu?do com sucesso!"
Exit Sub
End If
Next
End Sub
Desde já agradeço!
Estou com uma dúvida em relação a uma macro. Resumidamente a mesma funciona da seguinte forma:
1 - Ao clicar no botão o aplicativo da internet explorer irá executar;
2 - Acessará o site "www.e-danfe.com.br"
3 - Digitará no espaço em branco a chave de acesso de uma nota fiscal;
4 - Clicará no botão para prosseguir.
Bom, eu gostaria de saber se existe alguma função que permita que "uma determinada função só seja executada quando o site terminar de carregar", este problema se deu por conta de que, quando eu preencho o campo com o número da chave de acesso e clico em prosseguir, ele demora um pouco para carregar a outra página. Eu consegui suprir esta necessidade usando a função "Application.wait", porém, ela não foi muito viável pois, quando a internet fica um pouco lenta a função "detecta" isto, fazendo com que a função continue e acaba por "quebrar" a macro.
Segue abaixo a macro:
Private Sub CommandButton1_Click()
Dim IE As Object
Dim Button As Object
Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
'---------------------------
For i = 2 To 1000
If Cells(i, 2) <> "" Then
With IE
.Visible = True
.Navigate ("www.e-danfe.com")
While .busy Or .readystate <> 4:
DoEvents:
Wend
.Document.getelementbyid("chave-input").Focus
.Document.getelementbyid("chave-input").Value = Cells(i, 2)
.Document.all("continuarAba1").Click
While .busy Or .readystate <> 4:
DoEvents:
Wend
Debug.Print .locationURL
End With
'---------------------------
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 5
newSecond2 = Second(Now()) + 20
waitTime = TimeSerial(newHour, newMinute, newSecond)
waitTime2 = TimeSerial(newHour, newMinute, newSecond2)
Application.Wait waitTime
'---------------------------
For Each Button In IE.Document.GetElementsByClassName("download-nf btn btn-success")
Button.Click
Next
Application.Wait waitTime2
Application.SendKeys "%s", True
'---------------------------
Else
MsgBox "Processo conclu?do com sucesso!"
Exit Sub
End If
Next
End Sub
Desde já agradeço!