Incrementar o métod...
 
Notifications
Clear all

Incrementar o método: Application.OnTime ou similar  


AlexRodel
(@alexrodel)
Active Member Registered
Entrou: 2 anos atrás
Posts: 7
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?


ResponderCitar (Quote)
Tags do Tópico
VBA
Mauro Coutinho
(@coutinho)
Estimable Member Moderator
Entrou: 2 anos atrás
Posts: 104
 

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


LaerteB curtiu
ResponderCitar (Quote)
AlexRodel
(@alexrodel)
Active Member Registered
Entrou: 2 anos atrás
Posts: 7
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!


ResponderCitar (Quote)
Raygsson
(@raygsson)
Eminent Member Registered
Entrou: 7 meses atrás
Posts: 45
 

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

AlexRodel curtiu
ResponderCitar (Quote)
AlexRodel
(@alexrodel)
Active Member Registered
Entrou: 2 anos atrás
Posts: 7
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.


ResponderCitar (Quote)