Notifications
Clear all

Incrementar o método: Application.OnTime ou similar

6 Posts
4 Usuários
2 Reactions
2,173 Visualizações
(@alexrodel)
Posts: 7
Active Member
Topic starter
 

Bom dia!

 

Segue planilha para análise do meu problema.

 

Seguinte, tenho essa planilha que faz consulta de CNPJ, porém ela só realiza três consultas e não faz mais por que sistema não permite por determinado tempo.

Assim, queria incrementar na minha planilha o método de application.ontime ou algo similar para que ao clicar na macro, ela faça automaticamente a pesquisa dos outros CNPJ's que estão na tabela, sendo que, deve realizar a pesquisa de 3 CNPJ's e parar por um minuto, realizar 3 pesquisas e parar por um minuto. Sucessivamente.

Alguém poderia me ajudar?

 
Postado : 28/09/2020 10:32 am
Tags do Tópico
Mauro Coutinho
(@coutinho)
Posts: 95
Estimable Member
 

Alex, não consegui baixar seu arquivo, mas segue um exemplo de rotina, veja se consegue adaptar ao seu modelo:

'Essa chamada fara que a rotina execute a cada 10 segundos toda vez que for executada

Troque 'ExecutaOnTime' pelo nome da rotina que executa
Public Sub TesteOnTime()
Call Application.OnTime(Now + TimeValue("00:00:10"), "ExecutaOnTime")
End Sub

'Sua macro
Public Sub ExecutaOnTime()
'Suas instruções
MsgBox "Opa! Executou a sua macro apos 10 segundos."

'apos execução, chamamos novamente e será executada após o tempo determinado
Call TesteOnTime

End Sub

'Parar a execução da rotina OnTime
Public Sub PararExecução()
On Error Resume Next

Application.OnTime Now + TimeValue("00:00:10"), "TesteOnTime", , False

End Sub

 

[]s

Mauro Coutinho

 
Postado : 28/09/2020 11:48 am
LaerteB reacted
(@alexrodel)
Posts: 7
Active Member
Topic starter
 

Boa tarde Mauro!

 

Vou tentar fazer o que comenta-se. Obrigado!

 

De qualquer modo, segue o arquivo em .xlsm (antes estava em .rar)

 

Boa semana!

 
Postado : 28/09/2020 1:56 pm
Raygsson
(@raygsson)
Posts: 68
Trusted Member
 

Existem varias formas de fazer o Excel aguardar por um tempo, eu gosto de usar a função SLEEP por ser bem simples de usar , bem curta também. Se quiser pesquisar 3 e pausar por 1 minuto deixe a parte de cima do código assim:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub PreencherCNPJ()
Dim url As String
Dim varCNPJ As String
Dim pesquisa As Byte

fim_cnpj = Sheets("Tabela de CNPJS").Range("A100000").End(xlUp).Row
pesquisa = 0

For n = 2 To fim_cnpj

If Range("A" & n) <> "" Then


If pesquisa = 3 Then
Sleep (60000)
pesquisa = 0
End If

varCNPJ = onlyDigits(Range("A" & n))
url = "https://www.receitaws.com.br/v1/cnpj/" & varCNPJ
Set Myrequest = CreateObject("WinHttp.WinHttpRequest.5.1")
Myrequest.SetTimeouts 500000, 500000, 10000, 10000
Myrequest.Open "GET", url, False
Call Myrequest.send

pesquisa = pesquisa + 1
 
Postado : 28/09/2020 6:55 pm
AlexRodel reacted
(@alexrodel)
Posts: 7
Active Member
Topic starter
 

@raygsson

A fórmula informada deu certo! Apenas fiz ajuste porque meu sistema é 64b.

 

Obrigado!!


Editado pela Moderação. Motivo: Evite usar citações de mensagem inteira e onde não forem estritamente necessárias. Use-as apenas para partes da mensagem que necessitem destaque, esclarecimentos adicionais ou para ilustrar um raciocínio.

 
Postado : 29/09/2020 9:32 pm
(@Anônimo)
Posts: 0
 

@alexrodel você pode postar a fórmula atualizada? Estou com o mesmo problema!

 
Postado : 08/11/2021 9:24 am