Diego.Machado Postado Outubro 31, 2023 Denunciar Share Postado Outubro 31, 2023 Eu precisava criar um macro para pegar um CNPJ na planilha do Excel ir no site e consultar se o CNPJ ainda estava ativo pegar a informação se esta ativo ou não e trazer para o excel porém com vários CNPJS Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Novembro 1, 2023 Denunciar Share Postado Novembro 1, 2023 (editado) Boa noite Diego. Você consegue fazer isso manualmente ? Tem como algum "bloquei" para verificar se a pessoa que esta acessando é um "robô"? Dependendo das suas respostas sim da para fazer. @Diego.Machado Editado Novembro 1, 2023 por Alyson Ronnan Martins Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Novembro 1, 2023 Denunciar Share Postado Novembro 1, 2023 Passei um tempo fazendo alguns testes, encontrei um site que faz a consulta CNPJ (nunca tinha feito) e estou publicando o código do dentro de um arquivo. https://1drv.ms/x/s!ArTb7UjY-5CriJFnFdIQOkp_ODgGhw?e=4t42Zh Segue o código: Sub ConsultarCNPJ() ' Adcionar a referência Microsoft HTML Object Libary Dim IE As Object Dim doc As HTMLDocument Dim CNPJ As Range Dim Status As String ' Cria um novo objeto Internet Explorer Set IE = CreateObject("InternetExplorer.Application") ' Para cada CNPJ na coluna A (de A2 até a última célula preenchida) For Each CNPJ In Worksheets("Planilha1").Range("A2:A" & Worksheets("Planilha1").Cells(Rows.Count, 1).End(xlUp).Row) ' Navega para o site de consulta de CNPJ IE.navigate "https://www.situacao-cadastral.com/" ' Aguarda até que a página seja carregada Do While IE.Busy Or IE.readyState <> 4 Application.Wait DateAdd("s", 1, Now) Loop ' Insere o CNPJ no campo de pesquisa e clica no botão de pesquisa Set doc = IE.document doc.getElementById("doc").Value = CNPJ.Value doc.getElementById("consultar").Click ' Aguarda até que a página com os resultados seja carregada Do While IE.Busy Or IE.readyState <> 4 Application.Wait DateAdd("s", 1, Now) Loop ' Extrai o status do CNPJ e escreve na coluna B Set doc = IE.document Status = doc.getElementsByClassName("vrd")(0).innerText CNPJ.Offset(0, 1).Value = Status Next CNPJ ' Fecha o Internet Explorer IE.Quit End Sub Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego.Machado Postado Novembro 1, 2023 Autor Denunciar Share Postado Novembro 1, 2023 3 horas atrás, Alyson Ronnan Martins disse: Passei um tempo fazendo alguns testes, encontrei um site que faz a consulta CNPJ (nunca tinha feito) e estou publicando o código do dentro de um arquivo. https://1drv.ms/x/s!ArTb7UjY-5CriJFnFdIQOkp_ODgGhw?e=4t42Zh Segue o código: Sub ConsultarCNPJ() ' Adcionar a referência Microsoft HTML Object Libary Dim IE As Object Dim doc As HTMLDocument Dim CNPJ As Range Dim Status As String ' Cria um novo objeto Internet Explorer Set IE = CreateObject("InternetExplorer.Application") ' Para cada CNPJ na coluna A (de A2 até a última célula preenchida) For Each CNPJ In Worksheets("Planilha1").Range("A2:A" & Worksheets("Planilha1").Cells(Rows.Count, 1).End(xlUp).Row) ' Navega para o site de consulta de CNPJ IE.navigate "https://www.situacao-cadastral.com/" ' Aguarda até que a página seja carregada Do While IE.Busy Or IE.readyState <> 4 Application.Wait DateAdd("s", 1, Now) Loop ' Insere o CNPJ no campo de pesquisa e clica no botão de pesquisa Set doc = IE.document doc.getElementById("doc").Value = CNPJ.Value doc.getElementById("consultar").Click ' Aguarda até que a página com os resultados seja carregada Do While IE.Busy Or IE.readyState <> 4 Application.Wait DateAdd("s", 1, Now) Loop ' Extrai o status do CNPJ e escreve na coluna B Set doc = IE.document Status = doc.getElementsByClassName("vrd")(0).innerText CNPJ.Offset(0, 1).Value = Status Next CNPJ ' Fecha o Internet Explorer IE.Quit End Sub Muito obrigado eu irei testar e te falo se funcionou esse código já está em loop de pegar o primeiro CNPJ depois pegar o da linha de baixo assim em diante? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Novembro 1, 2023 Denunciar Share Postado Novembro 1, 2023 Fiquei com a duvida sobre o que comentou e coloquei um contador para verificar o "loop" e não encontrei, apesar do site que coloquei se um pouco lento para retornar a informação. Tenho total certeza que fazer isso em Python vai ser muito mais eficiente e rápido. @Diego.Machado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego.Machado Postado Novembro 2, 2023 Autor Denunciar Share Postado Novembro 2, 2023 18 horas atrás, Alyson Ronnan Martins disse: Fiquei com a duvida sobre o que comentou e coloquei um contador para verificar o "loop" e não encontrei, apesar do site que coloquei se um pouco lento para retornar a informação. Tenho total certeza que fazer isso em Python vai ser muito mais eficiente e rápido. @Diego.Machado Quando eu tento executar da esse erro 13 minutos atrás, Diego.Machado disse: Quando eu tento executar da esse erro E quando deixo essas linhas do código como texto acrescentando o ' antes de cada uma delas da um erro 91 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Novembro 7, 2023 Denunciar Share Postado Novembro 7, 2023 Boa tarde @Diego.Machado. Fiz uma revisão no código e parou o erro aqui para mim. Faz o teste ai nele: Consultar Status do CNPJ.xlsm Sub ConsultarCNPJ() ' Adicionar a referência Microsoft HTML Object Library Dim IE As Object Dim doc As HTMLDocument Dim CNPJ As Range Dim Status As String Dim countLoop As Long ' Criar um novo objeto Internet Explorer Set IE = CreateObject("InternetExplorer.Application") ' Para cada CNPJ na coluna A (de A2 até a última célula preenchida) For Each CNPJ In Worksheets("Planilha1").Range("A2:A" & Worksheets("Planilha1").Cells(Rows.Count, 1).End(xlUp).Row) countLoop = countLoop + 1 Debug.Print countLoop ' Navegar para o site de consulta de CNPJ IE.navigate "https://www.situacao-cadastral.com/" ' Aguardar até que a página seja carregada Do While IE.Busy Or IE.readyState <> 4 DoEvents Loop ' Inserir o CNPJ no campo de pesquisa e clicar no botão de pesquisa Set doc = IE.document doc.getElementById("doc").Value = CNPJ.Value doc.getElementById("consultar").Click ' Aguardar até que a página com os resultados seja carregada Do While IE.Busy Or IE.readyState <> 4 DoEvents Loop ' Extrair o status do CNPJ e escrever na coluna B Set doc = IE.document Status = doc.getElementsByClassName("vrd")(0).innerText CNPJ.Offset(0, 1).Value = Status Debug.Print "O CNPJ " & CNPJ.Value & " foi consultado." Next CNPJ ' Fechar o Internet Explorer IE.Quit End Sub Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego.Machado Postado Novembro 8, 2023 Autor Denunciar Share Postado Novembro 8, 2023 18 horas atrás, Alyson Ronnan Martins disse: Boa tarde @Diego.Machado. Fiz uma revisão no código e parou o erro aqui para mim. Faz o teste ai nele: Consultar Status do CNPJ.xlsm Sub ConsultarCNPJ() ' Adicionar a referência Microsoft HTML Object Library Dim IE As Object Dim doc As HTMLDocument Dim CNPJ As Range Dim Status As String Dim countLoop As Long ' Criar um novo objeto Internet Explorer Set IE = CreateObject("InternetExplorer.Application") ' Para cada CNPJ na coluna A (de A2 até a última célula preenchida) For Each CNPJ In Worksheets("Planilha1").Range("A2:A" & Worksheets("Planilha1").Cells(Rows.Count, 1).End(xlUp).Row) countLoop = countLoop + 1 Debug.Print countLoop ' Navegar para o site de consulta de CNPJ IE.navigate "https://www.situacao-cadastral.com/" ' Aguardar até que a página seja carregada Do While IE.Busy Or IE.readyState <> 4 DoEvents Loop ' Inserir o CNPJ no campo de pesquisa e clicar no botão de pesquisa Set doc = IE.document doc.getElementById("doc").Value = CNPJ.Value doc.getElementById("consultar").Click ' Aguardar até que a página com os resultados seja carregada Do While IE.Busy Or IE.readyState <> 4 DoEvents Loop ' Extrair o status do CNPJ e escrever na coluna B Set doc = IE.document Status = doc.getElementsByClassName("vrd")(0).innerText CNPJ.Offset(0, 1).Value = Status Debug.Print "O CNPJ " & CNPJ.Value & " foi consultado." Next CNPJ ' Fechar o Internet Explorer IE.Quit End Sub Continua dando o erro 91 Porem quando eu faço um teste no console do edge da esse erro como amostra na imagem anexada quando troco os () por [] funciona Não sei se pode ser por conta da versão do excel estou usando o 2013 ou alguma opção que tenho que ativar caso precise tenho o selenium e webdriver do chrome e o do edge 18 horas atrás, Alyson Ronnan Martins disse: Boa tarde @Diego.Machado. Fiz uma revisão no código e parou o erro aqui para mim. Faz o teste ai nele: Consultar Status do CNPJ.xlsm Sub ConsultarCNPJ() ' Adicionar a referência Microsoft HTML Object Library Dim IE As Object Dim doc As HTMLDocument Dim CNPJ As Range Dim Status As String Dim countLoop As Long ' Criar um novo objeto Internet Explorer Set IE = CreateObject("InternetExplorer.Application") ' Para cada CNPJ na coluna A (de A2 até a última célula preenchida) For Each CNPJ In Worksheets("Planilha1").Range("A2:A" & Worksheets("Planilha1").Cells(Rows.Count, 1).End(xlUp).Row) countLoop = countLoop + 1 Debug.Print countLoop ' Navegar para o site de consulta de CNPJ IE.navigate "https://www.situacao-cadastral.com/" ' Aguardar até que a página seja carregada Do While IE.Busy Or IE.readyState <> 4 DoEvents Loop ' Inserir o CNPJ no campo de pesquisa e clicar no botão de pesquisa Set doc = IE.document doc.getElementById("doc").Value = CNPJ.Value doc.getElementById("consultar").Click ' Aguardar até que a página com os resultados seja carregada Do While IE.Busy Or IE.readyState <> 4 DoEvents Loop ' Extrair o status do CNPJ e escrever na coluna B Set doc = IE.document Status = doc.getElementsByClassName("vrd")(0).innerText CNPJ.Offset(0, 1).Value = Status Debug.Print "O CNPJ " & CNPJ.Value & " foi consultado." Next CNPJ ' Fechar o Internet Explorer IE.Quit End Sub Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego.Machado Postado Novembro 8, 2023 Autor Denunciar Share Postado Novembro 8, 2023 2 horas atrás, Diego.Machado disse: Continua dando o erro 91 Porem quando eu faço um teste no console do edge da esse erro como amostra na imagem anexada quando troco os () por [] funciona Não sei se pode ser por conta da versão do excel estou usando o 2013 ou alguma opção que tenho que ativar caso precise tenho o selenium e webdriver do chrome e o do edge Eu estou com esse código se fosse ser mais fácil teria que mudar ele para invés de IE usar o selenium Private Sub btExecuta_Click() Application.ScreenUpdating = False Dim vErro As String Dim IElocation As String Dim Resultado(1 To 15) As String Dim vNome As String Dim vDados As String Dim vSituacao As String Dim W As Worksheet Dim Ie As Object Dim UltCel As Range Dim A As Integer Dim col As Integer Dim vSegundos As Integer Dim ln As Long Set W = Planilha1 vSegundos = 3 W.Range("A2").Select W.Range("B2:d1000").Clear W.Range("A1").Value = "num_cpf" W.Range("b1").Value = "nome_pessoa_física" W.Range("c1").Value = "situação" W.Range("d1").Value = "informações complementares" Set Ie = CreateObject("InternetExplorer.Application") Set UltCel = W.Cells(W.Rows.Count, 1).End(xlUp) With Ie .navigate "https://www.situacaocadastral.com.br/" .Visible = True End With Do While Ie.busy Loop ln = 2 col = 1 Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + vSegundos) Do While ln <= UltCel.Row Ie.Document.getelementbyid("doc").Value = W.Cells(ln, col) Ie.Document.getelementbyid("consultar").Click Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + vSegundos) On Error Resume Next vErro = Ie.Document.getelementbyid("mensagem").innertext On Error GoTo 0 If vErro = "Informe um termo válido! " Then Ie.Document.getelementbyid("consultar").Click Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + vSegundos) ElseIf vErro = "Informe um termo válido! " Then W.Cells(ln, col + 1).Value = "'" & vErro ElseIf Trim(vErro) = "CPF inválido" Then W.Cells(ln, col + 1).Value = "'" & vErro ElseIf Trim(vErro) = "#Erro: Tente novamente!" Then W.Cells(ln, col + 1).Value = "'" & vErro Else vErro = vbNullString End If Do While Ie.busy Loop If vErro = vbNullString Then vNome = Ie.Document.getelementsbyclassname("dados nome")(0).innertext vDados = Ie.Document.getelementsbyclassname("dados texto")(0).innertext vSituacao = Ie.Document.getelementsbyclassname("dados situacao")(0).innertext W.Cells(ln, col + 1) = vNome W.Cells(ln, col + 2) = vSituacao W.Cells(ln, col + 3) = vDados vNome = vbNullString vDados = vbNullString vSituacao = vbNullString Ie.Document.getelementbyid("btnVoltar").Click Else Ie.navigate "https://www.situacaocadastral.com.br/" W.Cells(ln, col + 1) = "Dados inválidos para consulta" End If ln = ln + 1 Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + vSegundos) Loop Ie.Quit W.UsedRange.EntireColumn.AutoFit Application.ScreenUpdating = True DoEvents MsgBox "Consulta realizada com sucesso!" Set Ie = Nothing Set UltCel = Nothing Set W = Nothing End sub Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Novembro 8, 2023 Denunciar Share Postado Novembro 8, 2023 14 minutos atrás, Diego.Machado disse: Eu estou com esse código se fosse ser mais fácil teria que mudar ele para invés de IE usar o selenium Private Sub btExecuta_Click() Application.ScreenUpdating = False Dim vErro As String Dim IElocation As String Dim Resultado(1 To 15) As String Dim vNome As String Dim vDados As String Dim vSituacao As String Dim W As Worksheet Dim Ie As Object Dim UltCel As Range Dim A As Integer Dim col As Integer Dim vSegundos As Integer Dim ln As Long Set W = Planilha1 vSegundos = 3 W.Range("A2").Select W.Range("B2:d1000").Clear W.Range("A1").Value = "num_cpf" W.Range("b1").Value = "nome_pessoa_física" W.Range("c1").Value = "situação" W.Range("d1").Value = "informações complementares" Set Ie = CreateObject("InternetExplorer.Application") Set UltCel = W.Cells(W.Rows.Count, 1).End(xlUp) With Ie .navigate "https://www.situacaocadastral.com.br/" .Visible = True End With Do While Ie.busy Loop ln = 2 col = 1 Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + vSegundos) Do While ln <= UltCel.Row Ie.Document.getelementbyid("doc").Value = W.Cells(ln, col) Ie.Document.getelementbyid("consultar").Click Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + vSegundos) On Error Resume Next vErro = Ie.Document.getelementbyid("mensagem").innertext On Error GoTo 0 If vErro = "Informe um termo válido! " Then Ie.Document.getelementbyid("consultar").Click Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + vSegundos) ElseIf vErro = "Informe um termo válido! " Then W.Cells(ln, col + 1).Value = "'" & vErro ElseIf Trim(vErro) = "CPF inválido" Then W.Cells(ln, col + 1).Value = "'" & vErro ElseIf Trim(vErro) = "#Erro: Tente novamente!" Then W.Cells(ln, col + 1).Value = "'" & vErro Else vErro = vbNullString End If Do While Ie.busy Loop If vErro = vbNullString Then vNome = Ie.Document.getelementsbyclassname("dados nome")(0).innertext vDados = Ie.Document.getelementsbyclassname("dados texto")(0).innertext vSituacao = Ie.Document.getelementsbyclassname("dados situacao")(0).innertext W.Cells(ln, col + 1) = vNome W.Cells(ln, col + 2) = vSituacao W.Cells(ln, col + 3) = vDados vNome = vbNullString vDados = vbNullString vSituacao = vbNullString Ie.Document.getelementbyid("btnVoltar").Click Else Ie.navigate "https://www.situacaocadastral.com.br/" W.Cells(ln, col + 1) = "Dados inválidos para consulta" End If ln = ln + 1 Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + vSegundos) Loop Ie.Quit W.UsedRange.EntireColumn.AutoFit Application.ScreenUpdating = True DoEvents MsgBox "Consulta realizada com sucesso!" Set Ie = Nothing Set UltCel = Nothing Set W = Nothing End sub É uma pergunta? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alyson Ronnan Martins Postado Novembro 8, 2023 Denunciar Share Postado Novembro 8, 2023 @Diego.Machado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego.Machado Postado Novembro 8, 2023 Autor Denunciar Share Postado Novembro 8, 2023 5 horas atrás, Alyson Ronnan Martins disse: É uma pergunta? Uma sugestão Eu encontrei esse código que faz exatamente oque eu precisava como aquele que estávamos tentando usar esta dando erro não sei se daria para modificar esse aqui para invés de usar IE usar Selenium Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Diego.Machado
Eu precisava criar um macro para pegar um CNPJ na planilha do Excel ir no site e consultar se o CNPJ ainda estava ativo pegar a informação se esta ativo ou não e trazer para o excel porém com vários CNPJS
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.