Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Clicar na seta para ir para próxima página

A Web está aí, não há como negar. Ela é onipresente em praticamente toda operação eletrônica realizada nos dias de hoje. Como não podia ser diferente, o Excel, ferramenta máxima para analistas e profissionais das mais diversas áreas do mercado precisa estar alinhado com esta necesssidade. E ele está! Neste forum, o debate é focado em expor dúvidas, sugestões, modelos de código e exemplos de uso do Excel na Integração com tecnologias Web.
Otalivio
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qui Out 20, 2016 5:54 pm

Clicar na seta para ir para próxima página

Mensagem por Otalivio »

Olá!

Apesar da ajuda inestimável do Mikel, estou preso num trecho do meu código.

Na minha rotina de trabalho, eu faço uma pesquisa que me retorna várias páginas. No caso, eu ja sei como pesquisar e como colar determinadas informações no Excel. A rotina seria algo como "pesquisar - abre primeira pagina - copia e cola informacoes - clica na seta para ir para a proxima pagina - copia e cola informacoes - etc etc até a utima pagina da pesquisa.

Mas, eu nao sei como fazer o VBA "clicar" nessa seta, pois o objeto nao tem Id, Tag, name, etc.... só tem essa linha html
<td class=" dr-dscr-button rich-datascr-button" onclick="Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});">

Então, meus caros, me ajudem! preciso de um código para "clicar" nessa bendita seta, e que também "identifique" que é a última página disponivel.

Por fim e não menos importante: sabe aquele seu conhecido Dummy, q vcs tem q falar bem devagar para entender? Pois é: ele é um gênio se comparado comigo :) Então, gente, mandem o código, com a explicação mais simples possivel! :D

Abraços


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Clicar na seta para ir para próxima página

Mensagem por Mikel Silveira Fraga »

Otalivio, boa noite.

Dummy foi péssima... rs. Mas vamos ao código.

Como você disse, não existe um atributo de identificação fácil, para conseguir acessar o elemento diretamente. Então, para tal, é preciso criar uma rotina que faça uma varredura em todos os elementos existentes no site, do elemento em questão. No seu caso, o elemento Td (Table Data).

Nesse caso, temos que trabalhar com dois objetos específico: uma coleção de objetos e um objeto único. Vamos atribuir todos os elementos Td da página, para a Coleção de Objetos e, através de um laço, vamos analisar todos os elementos Td dentro desta coleção, através do elemento Objeto Único. Vamos ao código:

Código: Selecionar todos

Dim oElement As Object 'Elemento Único
Dim oElementCol As Object 'Coleção de Objetos

Set oElementCol = IE.Document.getByElementsTagName("td") ' Atribui o grupo elemento Td para a coleção oElementCol

For Each oElement In oElementCol 'Inicia o laço dentro (In) da Coleção (oElementCol)

  If oElement.Class = "" Then 'Valida o atributo Class do elemento Td.
    
    oElement.Click 'Clica no elemento Td, onde esta localizado a Seta Próximo.
    Exit For 'Força saída do laço For, quando o elemento correto é localizado e clicado.
    
  End If

Next oElement 'Vai para o próximo elemento, até chegar ao último existente na página carregada.
Bem, acredito que esse código irá ajudar na sua necessidade.

Teste e nos retorne, ok.

Abraços e bom descanso.


Otalivio
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qui Out 20, 2016 5:54 pm

Re: Clicar na seta para ir para próxima página

Mensagem por Otalivio »

Mikel,

você é um gênio por tornar o código simples com suas explicações. Na verdade, já tinha visto ele em outras pesquisas, mas a explicação era tão confusa que eu achava que não era o que eu queria :)

Vou testar esse código amanha a tarde :)

Mas antes, se possível, uma dúvida, que foi a única coisa que não entendi no código:

If oElement.Class = "" Then 'Valida o atributo Class do elemento Td

na linha acima, eu mantenho as aspas sem valor algum mesmo, ou tenho que colocar algo? Como é que o código diferencia a seta de "próxima pagina" da seta "página anterior" ou mesmo da seta "ir para última página"?

Cara, obrigado de novo! :)


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Clicar na seta para ir para próxima página

Mensagem por Mikel Silveira Fraga »

Otalívio, boa tarde.

Cara, falha minha. Estava meio que dormindo ontem a noite, que esqueci de completar o código. Com base no elemento Td que você postou:

Código: Selecionar todos

<td class=" dr-dscr-button rich-datascr-button" onclick="Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});">
Essa linha de código tem que ficar assim:

Código: Selecionar todos

If oElement.Class = " dr-dscr-button rich-datascr-button" Then 'Valida o atributo Class do elemento Td
Agora sim, erro corrigido.

Abraços e excelente final de semana.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Otalivio
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qui Out 20, 2016 5:54 pm

Re: Clicar na seta para ir para próxima página

Mensagem por Otalivio »

Mikel,

fiz como vc disse... Mas aparece o erro 438 - O objeto nao aceita esa propriedade ou método nessa linha aqui

If oElement.Class = " dr-dscr-button rich-datascr-button"

:/

usei com espaço entre as aspas e a primeira letra "d".
Usei sem espaço também. :(


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Clicar na seta para ir para próxima página

Mensagem por Mikel Silveira Fraga »

Otalivio, boa tarde.

Hoje to bem voado. Mas sempre me confundo com esse comando. Não é class e sim className.

Tente dessa forma e nos retorne.

Abraços e excelente final de semana.


Otalivio
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qui Out 20, 2016 5:54 pm

Re: Clicar na seta para ir para próxima página

Mensagem por Otalivio »

Mikel,

o código não apresenta mais erro. MAS...

ele simplesmente termina e nao passa para a proxima pagina. fiz um debug no laço IF e ele passa por cada elemento da colecao, mas como o elemento nao cumpre a condicao do if, ele faz todo o loop e depois vai para end sub... :(

Cara, não sei se vou falar besteira... mas e se tentassemos algo com o fim da linha ?

onclick=Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Clicar na seta para ir para próxima página

Mensagem por Mikel Silveira Fraga »

Otalívio, bom dia.

Sem fazer testes, eu arrisco dois motivos para não ter funcionado:
1º) O elemento Td não esta na própria página, mas sim em uma segunda página aberta por um elemento Iframe;
2º) O valor passado do elemento Td*, esta incorreto.
* <td class=" dr-dscr-button rich-datascr-button" onclick="Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});">

Agora, caso nenhuma das sugestões acima resolvam o problema, minha única sugestão seria utilizar o Selenium VBA. Já precisei acessar elementos que utilizam funções JQuery, conforme ocorre nesse caso (Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'}) e, de nenhuma maneira, consegui manipular um comando JQuery usando o Microsoft Internet Control.

Faça as verificações e testes possíveis. Além disso, pense na possibilidade de mudar de biblioteca, conforme mencionado acima.

Aguardo retorno. Abraços.


Otalivio
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qui Out 20, 2016 5:54 pm

Re: Clicar na seta para ir para próxima página

Mensagem por Otalivio »

Mikel,

obrigado mesmo por toda a ajuda.

vou ler sobre o Selenium e ver se consigo baixa-lo (pois há regras de download por causa dos sistemas corporativos).

Não vou fechar ainda esse tópico, pois vou ler sobre o Selenium :)

Obrigado mesmo pela ajuda!


Otalivio
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qui Out 20, 2016 5:54 pm

Re: Clicar na seta para ir para próxima página

Mensagem por Otalivio »

Ola, Mikel

Cosnegui instalar o Selenium Type Library no computador do trabalho, mas não tenho permissão para instalar o Wrapper nem o IDE :(

Consigo apenas com o Selenium Type Library automatizar o IE como eu quero? :(

Comecei a reescrever o código usando o Selenium e já empaquei numa ação do código:

Consigo abrir o IE e abrir na pagina corporativa. Mas, quando uso o comando sendkeys para colocar a matricula no campo devido, o IE simplesmente fecha, com mensagem que teve um erro, mas não fala que erro é esse. :/

Tentei tb usar a o comando "click", mas o IE tb fecha do mesmo jeito...

Nossa, que dor de cabeça :( Consigo criar códigos manipulando o AttachmentExtra, mas alguns relatorios sao criados na plataforma WEB... :evil:

É dor de cabeça, mas não vou desistir!

Qualquer ajuda é bem vinda! :D

Abraços e bom fim de semana!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder