Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Clicar em botão na web - nao funciona [RESOLVIDO]
Clicar em botão na web - nao funciona [RESOLVIDO]
Srs,
Meu objetivo é entrar neste site (http://cvmweb.cvm.gov.br/SWB/Sistemas/S ... oConsult=c), consultar o nome de uma empresa, clicar em consultar e depois clicar na linha que contenha 'concedido'.
Consigo fazer a primeira parte, mas nao a segunda, de clicar no botão. Podem me ajudar? Já tentei com .click tambem e nada. Simplesmente não responde.
Public Sub ConectaWeb()
On Error Resume Next
Dim endereço As String
Dim mostra As Boolean
'entra no site
Dim i, n, x As Integer
endereço = "http://cvmweb.cvm.gov.br/SWB/Sistemas/S ... oConsult=c"
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate (endereço)
While ie.ReadyState <> 4
Wend
'seleciona o nome da empresa
ie.Visible = True
ie.document.all("txtCNPJNome").innerText = "EZ TEC"
While ie.ReadyState <> 4
Wend
ie.document.forms.Item("form1").submit
While ie.ReadyState <> 4
Wend
Application.Wait Now() + TimeValue("00:00:10")
'IDENTIFICA QUAL LINHA CONTEM 'CONCEDIDO'
sit = ie.document.all("dlCiasCdCVM__ctl1_Linkbutton9").innerText
While ie.ReadyState <> 4
Wend
j = 9
i = 2
a = Left(sit, 9)
While Left(sit, 9) <> "Concedido"
If j = 9 Then
j = 12
Else
j = 12
End If
i = i + 1
sit = ie.document.all("dlCiasCdCVM__ctl" & i & "_Linkbutton" & j & "").innerText
Wend
' CLICAR
ie.document.getElementById("dlCiasCdCVM$_ctl" & i & "_Linkbutton" & j & "").submit
While ie.ReadyState <> 4
Wend
End Sub
Meu objetivo é entrar neste site (http://cvmweb.cvm.gov.br/SWB/Sistemas/S ... oConsult=c), consultar o nome de uma empresa, clicar em consultar e depois clicar na linha que contenha 'concedido'.
Consigo fazer a primeira parte, mas nao a segunda, de clicar no botão. Podem me ajudar? Já tentei com .click tambem e nada. Simplesmente não responde.
Public Sub ConectaWeb()
On Error Resume Next
Dim endereço As String
Dim mostra As Boolean
'entra no site
Dim i, n, x As Integer
endereço = "http://cvmweb.cvm.gov.br/SWB/Sistemas/S ... oConsult=c"
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate (endereço)
While ie.ReadyState <> 4
Wend
'seleciona o nome da empresa
ie.Visible = True
ie.document.all("txtCNPJNome").innerText = "EZ TEC"
While ie.ReadyState <> 4
Wend
ie.document.forms.Item("form1").submit
While ie.ReadyState <> 4
Wend
Application.Wait Now() + TimeValue("00:00:10")
'IDENTIFICA QUAL LINHA CONTEM 'CONCEDIDO'
sit = ie.document.all("dlCiasCdCVM__ctl1_Linkbutton9").innerText
While ie.ReadyState <> 4
Wend
j = 9
i = 2
a = Left(sit, 9)
While Left(sit, 9) <> "Concedido"
If j = 9 Then
j = 12
Else
j = 12
End If
i = i + 1
sit = ie.document.all("dlCiasCdCVM__ctl" & i & "_Linkbutton" & j & "").innerText
Wend
' CLICAR
ie.document.getElementById("dlCiasCdCVM$_ctl" & i & "_Linkbutton" & j & "").submit
While ie.ReadyState <> 4
Wend
End Sub
Editado pela última vez por Bobadilha em Seg Mai 09, 2016 10:17 am, em um total de 1 vez.
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Clicar em botão na web - nao funciona
Bobadilha, bom dia e seja bem vindo ao fórum.
Para obter um melhor resultado no acesso a esta página, fiz algumas alterações na estrutura do código, reduzindo bastante as linhas de comando. Segue abaixo:
Dessa forma, conseguira acionar o primeiro resultado existente com a Situação Registro como Concedido.
Teste e nos retorne.
Forte abraço.
Para obter um melhor resultado no acesso a esta página, fiz algumas alterações na estrutura do código, reduzindo bastante as linhas de comando. Segue abaixo:
Código: Selecionar todos
Option Explicit
Const endereço As String = "http://cvmweb.cvm.gov.br/" & _
"SWB/Sistemas/SCW/CPublica/CiaAb/FormBuscaCiaAb.aspx?TipoConsult=c"
Public Sub ConectaWeb()
On Error Resume Next
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
'Modifiquei acima.
'entra no site
ie.navigate (endereço)
While ie.ReadyState <> 4
Wend
'seleciona o nome da empresa
ie.Visible = True
ie.document.all("txtCNPJNome").innerText = "EZ TEC"
While ie.ReadyState <> 4
Wend
ie.document.forms.Item("form1").submit
While ie.ReadyState <> 4
Wend
Application.Wait Now() + TimeValue("00:00:10")
'Modifiquei daqui pra baixo.
'IDENTIFICA QUAL LINHA CONTEM 'CONCEDIDO'
Dim elemUnique, elemCollection As Object
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
MsgBox elemUnique.innerText
If elemUnique.innerText Like "*Concedido*" Then
elemUnique.Click
Exit For
End If
Next elemUnique
End Sub
Teste e nos retorne.
Forte abraço.
Re: Clicar em botão na web - nao funciona
Ótimo, muito obrigado! Funcionou perfeitamente.
Agora, sem querer abusar, tenho uma outra duvida:
Eu preciso fazer o download do ultimo arquivo disponibilizado da pagina (no link a seguir).Gostaria de salvar o arquivo em uma pasta especifica no sistema.
http://siteempresas.bovespa.com.br/cons ... QtLinks=10
(click em Valores Mobiliários negociados e detidos (art. 11 da Instr. CVM nº 358))
Tentei adicionando o seguinte codigo:
''Seleciona o relatorio CVM 358
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
' MsgBox elemUnique.innerText
If elemUnique.innerText Like "*358*" Then
elemUnique.Click
Exit For
End If
Next elemUnique
Application.Wait Now() + TimeValue("00:00:10")
'' Baixa o ultimo arquivo disponivel
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
' MsgBox elemUnique.innerText
If elemUnique.innerText Like "*Download*" Then
elemUnique.Click
Exit For
End If
Next elemUnique
O problema que não consigo baixar pois o IE mostra aquela tela perguntando ao usuario 'Abrir','Salvar Como' e 'Cancelar'. E tambem assim estou salvando em Downloads...
Tem alguma alternativa?
Abraços e muito obrigado ! Foi de muita ajuda já !
Agora, sem querer abusar, tenho uma outra duvida:
Eu preciso fazer o download do ultimo arquivo disponibilizado da pagina (no link a seguir).Gostaria de salvar o arquivo em uma pasta especifica no sistema.
http://siteempresas.bovespa.com.br/cons ... QtLinks=10
(click em Valores Mobiliários negociados e detidos (art. 11 da Instr. CVM nº 358))
Tentei adicionando o seguinte codigo:
''Seleciona o relatorio CVM 358
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
' MsgBox elemUnique.innerText
If elemUnique.innerText Like "*358*" Then
elemUnique.Click
Exit For
End If
Next elemUnique
Application.Wait Now() + TimeValue("00:00:10")
'' Baixa o ultimo arquivo disponivel
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
' MsgBox elemUnique.innerText
If elemUnique.innerText Like "*Download*" Then
elemUnique.Click
Exit For
End If
Next elemUnique
O problema que não consigo baixar pois o IE mostra aquela tela perguntando ao usuario 'Abrir','Salvar Como' e 'Cancelar'. E tambem assim estou salvando em Downloads...
Tem alguma alternativa?
Abraços e muito obrigado ! Foi de muita ajuda já !
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Clicar em botão na web - nao funciona
Bobadilha, boa tarde.
Em relação ao download do arquivo, seria interessante adaptar o código desse artigo do Blog do Tomás:
- VBA – FAZENDO O DOWNLOAD DE UM ARQUIVO
Adaptando esse código, você já conseguirá resolver este problema.
Tente e nos retorne se tiver dificuldades.
Em relação ao download do arquivo, seria interessante adaptar o código desse artigo do Blog do Tomás:
- VBA – FAZENDO O DOWNLOAD DE UM ARQUIVO
Adaptando esse código, você já conseguirá resolver este problema.
Tente e nos retorne se tiver dificuldades.
Re: Clicar em botão na web - nao funciona
Opa
Ja tinha visto este codigo antes mas nao consegui adaptar. Tentei fazer o seguinte:
Public Sub ConectaWeb()
On Error Resume Next
Dim j As Variant
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
'Modifiquei acima.
'entra no site
ie.navigate (endereço)
While ie.ReadyState <> 4
Wend
'seleciona o nome da empresa
ie.Visible = True
ie.document.all("txtCNPJNome").innerText = "EZ TEC"
While ie.ReadyState <> 4
Wend
ie.document.forms.Item("form1").submit
While ie.ReadyState <> 4
Wend
Application.Wait Now() + TimeValue("00:00:10")
'Modifiquei daqui pra baixo.
'IDENTIFICA QUAL LINHA CONTEM 'CONCEDIDO'
Dim elemUnique, elemCollection As Object
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
' MsgBox elemUnique.innerText
If elemUnique.innerText Like "*Concedido*" Then
elemUnique.Click
Exit For
End If
Next elemUnique
Application.Wait Now() + TimeValue("00:00:10")
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
' MsgBox elemUnique.innerText
If elemUnique.innerText Like "*358*" Then
elemUnique.Click
Exit For
End If
Next elemUnique
Application.Wait Now() + TimeValue("00:00:10")
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
' MsgBox elemUnique.innerText
If elemUnique.innerText Like "*Download*" Then
elemUnique.Click
' j = elemUnique
On Error GoTo Err
Dim Auxiliar As Long
Dim URL As String, CaminhoLocal As String
URL = elemUnique
CaminhoLocal = "C:\Users\abobadilha\Downloads"
Auxiliar = URLDownloadToFile(0, URL, CaminhoLocal, 0, 0)
MsgBox "Download efetuado com sucesso!"
Exit Sub
Err:
MsgBox "Erro no download do arquivo"
Exit For
End If
Next elemUnique
Eu recebo a mensagem de Download efetuado com sucesso, mas o arquivo nao se encontra na pasta que indiquei.
Sabe o que pode ser?
abs,
Ja tinha visto este codigo antes mas nao consegui adaptar. Tentei fazer o seguinte:
Public Sub ConectaWeb()
On Error Resume Next
Dim j As Variant
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
'Modifiquei acima.
'entra no site
ie.navigate (endereço)
While ie.ReadyState <> 4
Wend
'seleciona o nome da empresa
ie.Visible = True
ie.document.all("txtCNPJNome").innerText = "EZ TEC"
While ie.ReadyState <> 4
Wend
ie.document.forms.Item("form1").submit
While ie.ReadyState <> 4
Wend
Application.Wait Now() + TimeValue("00:00:10")
'Modifiquei daqui pra baixo.
'IDENTIFICA QUAL LINHA CONTEM 'CONCEDIDO'
Dim elemUnique, elemCollection As Object
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
' MsgBox elemUnique.innerText
If elemUnique.innerText Like "*Concedido*" Then
elemUnique.Click
Exit For
End If
Next elemUnique
Application.Wait Now() + TimeValue("00:00:10")
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
' MsgBox elemUnique.innerText
If elemUnique.innerText Like "*358*" Then
elemUnique.Click
Exit For
End If
Next elemUnique
Application.Wait Now() + TimeValue("00:00:10")
Set elemCollection = ie.document.getElementsByTagName("a")
For Each elemUnique In elemCollection
' MsgBox elemUnique.innerText
If elemUnique.innerText Like "*Download*" Then
elemUnique.Click
' j = elemUnique
On Error GoTo Err
Dim Auxiliar As Long
Dim URL As String, CaminhoLocal As String
URL = elemUnique
CaminhoLocal = "C:\Users\abobadilha\Downloads"
Auxiliar = URLDownloadToFile(0, URL, CaminhoLocal, 0, 0)
MsgBox "Download efetuado com sucesso!"
Exit Sub
Err:
MsgBox "Erro no download do arquivo"
Exit For
End If
Next elemUnique
Eu recebo a mensagem de Download efetuado com sucesso, mas o arquivo nao se encontra na pasta que indiquei.
Sabe o que pode ser?
abs,
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Clicar em botão na web - nao funciona
Bobadilha, bom dia.
Bem, pelo que pude ver no seu código, acredito que o erro esteja na linha de comando abaixo:
Como a variável URL é uma String, precisa ser passado um texto para ela, e do jeito que foi feito, isso não esta ocorrendo.
Tente alterar esse comando, da seguinte forma:
Essa forma, você estará passando para a variável URL, o endereço do elemento elemUnique.
Teste e nos retorne.
Abraços e excelente semana.
Bem, pelo que pude ver no seu código, acredito que o erro esteja na linha de comando abaixo:
Código: Selecionar todos
URL = elemUnique
Tente alterar esse comando, da seguinte forma:
Código: Selecionar todos
URL = elemUnique.Src
Teste e nos retorne.
Abraços e excelente semana.
Re: Clicar em botão na web - nao funciona
Obrigado pela respostas!
estou recebendo o seguinte erro: Run-time error 438, Object doenst support this property or method
Parece que meu VBA nao reconhece o comando .Scr
estou recebendo o seguinte erro: Run-time error 438, Object doenst support this property or method
Parece que meu VBA nao reconhece o comando .Scr
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Clicar em botão na web - nao funciona
Bobadilha, bom dia.
Cara, entrei no site que você passou, para analisar o que poderia estar ocorrendo de errado. Nessa situação, esta sendo utilizado uma função em JavaScript, que busca o arquivo, através de uma página desenvolvida em Asp.
Em resumo, extremamente complexo para se fazer utilizando o IE. O que posso lhe aconselhar, é que busque nessa mesma seção, os tópicos que falam sobre o Selenium VBA.
Por que o Selenium VBA? Através dele, é possível manipular outros navegadores com recursos mais atuais e estáveis, que possibilitam uma melhor interação com recursos/linguagens como JavaScript e Asp.
Utilizando o Microsoft Internet Control, não vai ser fácil fazer isso, se é que conseguiríamos fazer a rotina de forma correta.
Infelizmente não tenho muito como lhe ajudar neste caso.
Veja qual é sua melhor opção e nos retorne. Fico no aguardo.
Cara, entrei no site que você passou, para analisar o que poderia estar ocorrendo de errado. Nessa situação, esta sendo utilizado uma função em JavaScript, que busca o arquivo, através de uma página desenvolvida em Asp.
Em resumo, extremamente complexo para se fazer utilizando o IE. O que posso lhe aconselhar, é que busque nessa mesma seção, os tópicos que falam sobre o Selenium VBA.
Por que o Selenium VBA? Através dele, é possível manipular outros navegadores com recursos mais atuais e estáveis, que possibilitam uma melhor interação com recursos/linguagens como JavaScript e Asp.
Utilizando o Microsoft Internet Control, não vai ser fácil fazer isso, se é que conseguiríamos fazer a rotina de forma correta.
Infelizmente não tenho muito como lhe ajudar neste caso.
Veja qual é sua melhor opção e nos retorne. Fico no aguardo.
Re: Clicar em botão na web - nao funciona
Doutor, gastei um tempo no Selenium mas acho que vai valer a pena!
Consegui instalar, executar a rotina e fazer o download mas só falta uma coisa. Gravei a seguinte macro:
Public Sub AAAAAAAAAAAA()
Dim selenium As New SeleniumWrapper.WebDriver
selenium.Start "chrome", "http://cvmweb.cvm.gov.br/"
selenium.Open "/SWB/Sistemas/SCW/CPublica/CiaAb/FormBuscaCiaAb.aspx?TipoConsult=c"
selenium.Type "id=txtCNPJNome", "EZ TEC"
selenium.clickAndWait "id=btnContinuar"
selenium.clickAndWait "id=dlCiasCdCVM__ctl1_Linkbutton9"
selenium.clickAndWait "link=Valores Mobiliários negociados e detidos (art. 11 da Instr. CVM nº 358)"
selenium.clickAndWait "link=Download"
selenium.clickAndWait "xpath=(//a[contains(text(),'Download')])[2]"
selenium.clickAndWait "xpath=(//a[contains(text(),'Download')])[3]"
selenium.stop
End Sub
Só que na pagina que abre antes do download, preciso identificar a data de referencia.
como consigo isso?
abraços e muito obrigado! está me ajudando muito!
Consegui instalar, executar a rotina e fazer o download mas só falta uma coisa. Gravei a seguinte macro:
Public Sub AAAAAAAAAAAA()
Dim selenium As New SeleniumWrapper.WebDriver
selenium.Start "chrome", "http://cvmweb.cvm.gov.br/"
selenium.Open "/SWB/Sistemas/SCW/CPublica/CiaAb/FormBuscaCiaAb.aspx?TipoConsult=c"
selenium.Type "id=txtCNPJNome", "EZ TEC"
selenium.clickAndWait "id=btnContinuar"
selenium.clickAndWait "id=dlCiasCdCVM__ctl1_Linkbutton9"
selenium.clickAndWait "link=Valores Mobiliários negociados e detidos (art. 11 da Instr. CVM nº 358)"
selenium.clickAndWait "link=Download"
selenium.clickAndWait "xpath=(//a[contains(text(),'Download')])[2]"
selenium.clickAndWait "xpath=(//a[contains(text(),'Download')])[3]"
selenium.stop
End Sub
Só que na pagina que abre antes do download, preciso identificar a data de referencia.
como consigo isso?
abraços e muito obrigado! está me ajudando muito!
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Clicar em botão na web - nao funciona
Bobadilha, boa tarde.
Você precisa que essa identificação seja feita antes do download, correto?
Nesse caso, conforme o mês que estiver disponível, vai ter alguma situação em que não seja realizado o download do arquivo.
Exemplo: hoje estamos no dia 05/05/2016 e ainda não esta disponível o documento referente ao período de Abril/2016. Nesse caso, deve ser feito o download do documento de Mar/2016 ou não? Que tipo de relação você tem, para utilizar como referência nesse momento, definindo se o download desse documento, que é o último disponível, deve ser realizado ou não?
Em relação a reconhecer o período e fazer o download, pode ser acrescentado o bloco de código abaixo:
Veja se isso ajuda e nos retorne qual é o critério utilizado para decidir se esse download será ou não baixado nesse momento.
Fico no aguardo.
Você precisa que essa identificação seja feita antes do download, correto?
Nesse caso, conforme o mês que estiver disponível, vai ter alguma situação em que não seja realizado o download do arquivo.
Exemplo: hoje estamos no dia 05/05/2016 e ainda não esta disponível o documento referente ao período de Abril/2016. Nesse caso, deve ser feito o download do documento de Mar/2016 ou não? Que tipo de relação você tem, para utilizar como referência nesse momento, definindo se o download desse documento, que é o último disponível, deve ser realizado ou não?
Em relação a reconhecer o período e fazer o download, pode ser acrescentado o bloco de código abaixo:
Código: Selecionar todos
Public Sub AAAAAAAAAAAA()
Dim selenium As New SeleniumWrapper.WebDriver
selenium.Start "chrome", "http://cvmweb.cvm.gov.br/"
selenium.Open "/SWB/Sistemas/SCW/CPublica/CiaAb/FormBuscaCiaAb.aspx?TipoConsult=c"
selenium.Type "id=txtCNPJNome", "EZ TEC"
selenium.clickAndWait "id=btnContinuar"
selenium.clickAndWait "id=dlCiasCdCVM__ctl1_Linkbutton9"
selenium.clickAndWait "link=Valores Mobiliários negociados e detidos (art. 11 da Instr. CVM nº 358)"
'selenium.clickAndWait "link=Download"
'selenium.clickAndWait "xpath=(//a[contains(text(),'Download')])[2]"
'selenium.clickAndWait "xpath=(//a[contains(text(),'Download')])[3]"
Dim tbDados As SeleniumWrapper.WebElementCollection
Dim iCell, iTotal As Integer
Set tbDados = selenium.findElementsByXPath("//td")
iTotal = tbDados.Count - 1
For iCell = 0 To iTotal
If tbDados.Item(iCell).Text = "Data Ref." Then
tbDados.Item(iCell - 3).findElementByTagName("a").Click
End If
Next iCell
selenium.stop
End Sub
Fico no aguardo.