Incrementar o métod...
 
Compartilhar:
Notifications
Clear all

Incrementar o método: Application.OnTime ou similar


AlexRodel
Posts: 7
Registered
Topic starter
(@alexrodel)
Active Member
Entrou: 3 anos atrás

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?

Responder
Tags do Tópico
VBA
5 Respostas
Mauro Coutinho
Posts: 102
Moderator
(@coutinho)
Estimable Member
Entrou: 3 anos atrás

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("0010"), "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("0010"), "TesteOnTime", , False

End Sub

 

[]s

Mauro Coutinho

Responder
AlexRodel
Posts: 7
Registered
Topic starter
(@alexrodel)
Active Member
Entrou: 3 anos atrás

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!

Responder
Raygsson
Posts: 68
Registered
(@raygsson)
Trusted Member
Entrou: 2 anos atrás

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
Responder
2 Respostas
AlexRodel
Registered
(@alexrodel)
Entrou: 3 anos atrás

Active Member
Posts: 7

@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.

Responder
gwzani
Registered
(@gwzani)
Entrou: 9 meses atrás

New Member
Posts: 0

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

Responder
Compartilhar: