MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    VBA interagindo com o internet explorer: erro no metodo "Sendkeys" enter

    Compartilhe

    Dimayju
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 26/04/2017

    VBA interagindo com o internet explorer: erro no metodo "Sendkeys" enter

    Mensagem  Dimayju em Qua 26 Abr 2017, 22:07

    Olá,

    Boa tarde.

    Estou desenvolvendo uma macro no Access que interage com o internet explorer, consigo manipular todos os botões(inserir, reconhecer, extrair), porém tenho um problema quando o assunto é dar um comando do windows(ex.: enter).

    Já tentei vários que achei em outros sites, do tipo (Application.SendKeys "~"), da erro na macro *erro de compilação, metodo ou membro de dados não encontrado

    o exemplo abaixo foi encontrado na internet:

    Código:
    Sub ExemploBuscaGoogle()
    On Error Resume Next
        
        Dim i As Long
        
        Dim ie As Object
        Dim objElement As Object
        Dim objCollection As Object
        'Dim Wait As Object
        'Dim SendKeys As Object
        
        ' Cria instância do IE
        Set ie = CreateObject("InternetExplorer.Application")
        
        ' Define o endereço a ser carregado
        ie.Navigate ("https://www.google.com.br")
        
        ' Define se a janela do IE será ou não exibida
        ie.Visible = True
        
        ' Espera carregar. A espera aqui está definida para 1 segundo,
        ' mas pode ser ajustada dependendo da necessidade.
        Do While ie.Busy
            Application DateAdd("s", 1, Now) '.Wait
        Loop


        ' Busca campos tipo input, uma vez que queremos acessar o campo de busca.
        ' Sabemos que o campo é tipo input porque analisamos o código HTML da página do Google.
        ' O método getElementByTagName retorna todas as TAGs HTML da página carregada com o nome desejado.
        Set objCollection = ie.Document.getElementsByTagName("input")
        
        
        ' Varre os inputs do HTML procurando pelos elementos desejados
        ' Queremos encontrar o elemento input com name = "q"
        ' Uso o while aqui mas poderia usar o 'for each'
        i = 0
        While i < objCollection.Length
            
            ' "q" é o nome do campo de busca, como visto no código HTML
            teste = objCollection(i).Name
            If objCollection(i).Name = "q" Then
                
                ' Preenche o campo de busca com o que queremos
                objCollection(i).Value = "dicasspss.blogspot.com"
            
            End If
            
            i = i + 1
            
        Wend
        
        ' Após preenchermos o campo de pesquisa mandamos um 'enter' para o sistema.
        ' No método SendKeys o 'enter' é representado pelo símbolo ~
        Application.SendKeys ("~")
        

        ' Esperamos novamente o IE carregar a página.
        ' Note que o codigo aqui realiza uma espera de 1 segundo
        ' mesmo sem verificar se o IE está ocupado.
        ' Isso é uma boa estratégia pois diversos sites passam por
        ' mais de uma janela após submeter informações
        ' a um formulário. Então a espera tenta garantir que a janela
        ' final esteja carregada.
        'Application.Wait DateAdd("s", 1, Now)
        Do While ie.Busy
         '   Application.Wait DateAdd("s", 1, Now)
        Loop
        
        
        ' Agora temos que buscar o primeiro link do primeiro resultado.
        ' Novamente temos que analisar o HTML, agora da página de resultados.
        
        
        ' Buscamos as tags 'li' onde class = 'g' da página, pois é onde estão os resultados.
        ' Novamente, sabemos pela análise do HTML.
        Set objCollection2 = ie.Document.getElementsByTagName("li")
        
        
        ' Dentre as tags 'li' buscamos a primeira com classe 'g'
        For Each elemento In objCollection2
            
            ' "q" é o nome do campo de busca, como visto no código HTML
            teste1 = elemento.Name
            If elemento.className = "g" Then
            
                ' Mostra a msgbox com o texto do primeiro resultado
                MsgBox elemento.innerText

                Exit For
            
            End If
        
        Next
        
        ' Fecha a instância do IE
        ie.Quit

    End Sub

    Agradeço o apoio!!
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: VBA interagindo com o internet explorer: erro no metodo "Sendkeys" enter

    Mensagem  JPaulo em Qui 27 Abr 2017, 09:10

    Ola seja bem vindo ao forum;

    Teste e retorne;

    Código:
    SendKeys "{ENTER}", True


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Dimayju
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 26/04/2017

    Ola seja bem vindo ao forum; Teste e retorne; CÓDIGO: SendKeys "{ENTER}", True

    Mensagem  Dimayju em Qui 27 Abr 2017, 15:06

    JPAULO, Bom dia.

    Obrigado pela ajuda, mas infelizmente ele não aceitou o comando. Simplesmente não deu erro nem teclou enter no navegador, mesmo retirando o "on error resume next".

    Deu certo no código que informei?
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: VBA interagindo com o internet explorer: erro no metodo "Sendkeys" enter

    Mensagem  JPaulo em Qui 27 Abr 2017, 16:21

    Sim, esse comando que lhe passei funciona aqui.

    A partir desse comando é que o trecho de código não funciona.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Dimayju
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 26/04/2017

    Re: VBA interagindo com o internet explorer: erro no metodo "Sendkeys" enter

    Mensagem  Dimayju em Qui 27 Abr 2017, 17:21

    JPAULO,

    Achei num forum em inglês um comando similar, mas também não funcionou, é em javascript.

    Código:
    Sub FillInternetForm()
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Navigate "https://www.google.com.br"
    IE.Visible = True
    While IE.Busy
    DoEvents
    Wend

    'Set TrackID = IE.Document.getElementById("MDICtextbox")
    'TrackID.Value = "Aspirin"

        Set objCollection = IE.Document.getElementsByTagName("input")
       
       
        ' Varre os inputs do HTML procurando pelos elementos desejados
        ' Queremos encontrar o elemento input com name = "q"
        ' Uso o while aqui mas poderia usar o 'for each'
        i = 0
        While i < objCollection.Length
           
            ' "q" é o nome do campo de busca, como visto no código HTML
            teste = objCollection(i).Name
            If objCollection(i).Name = "q" Then
               
                ' Preenche o campo de busca com o que queremos
                objCollection(i).Value = "globo.com"
           
            End If
           
            i = i + 1
           
        Wend

    IE.Visible = True
    'Esse abaixo no lugar do IE.SendKeys "{ENTER}", True
    'Achei no site ''http://stackoverflow.com/questions/30862049/sendkey-enter-not-working-when-automating-internet-explorer''
    IE.Document.parentWindow.execScript "handleKeyDown({which:13,preventDefault:function(){}});"

    End Sub

    Consegue dar enter ou entender essa função em javascript?
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: VBA interagindo com o internet explorer: erro no metodo "Sendkeys" enter

    Mensagem  JPaulo em Qui 27 Abr 2017, 18:04

    [Você precisa estar registrado e conectado para ver este link.]

    Outro exemplo feito aqui;

    [Você precisa estar registrado e conectado para ver este link.]



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Dimayju
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 26/04/2017

    Re: VBA interagindo com o internet explorer: erro no metodo "Sendkeys" enter

    Mensagem  Dimayju em Qui 27 Abr 2017, 21:23

    JPAULO,

    Boa tarde.

    Baixei o arquivo e testei aqui, para o site em especifico que está no banco de dados funcionou.

    Alterei para o google.com e infelizmente não funcionou.

    Vou continuar procurando aqui, obrigado pela ajuda.

      Data/hora atual: Sab 18 Nov 2017, 13:41