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

Macro para acessar sistema online e input de dados

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.
Renato_TC
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qui Jun 23, 2016 4:37 pm

Macro para acessar sistema online e input de dados

Mensagem por Renato_TC »

Pessoal,

Estou precisando acessar um sistema e inserir dados a partir de uma planilha excel.
Fiz a macro abaixo mas está dando erro quando tento inserir os dados da segunda tela.
Alguem pode me dar uma ajuda ?

Obrigado



Sub Macro1()
'
' Macro1 Macro
'

' Posiciona cursor na segunda linha.
Range("A2").Select

' Cria contador
Dim lContador As Long

' Cria um objeto Internet Explorer
Dim IE As InternetExplorer
Set IE = New InternetExplorer

' Torna o objeto visivel
IE.Visible = True

' Acessa site - Tela de login
IE.Navigate "https://www.......asp"

' Verifica se a pagina já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend

' Preenche usuário e senha do sistema
IE.Document.all("nome").innerText = "USUARIO"
IE.Document.all("senha").innerText = "SENHA"

' Clica em entrar
IE.Document.all("submit").Click

' Aguarda 3 segundos para carregar corretamente.
sng = Timer
Do While sng + 3 > Timer
Loop

' Acessa tela de defeitos para fornecedores.
IE.Navigate "https://www...........asp"

' Verifica se a pagina já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend

=> O ERRO ACONTECE NA LINHA ABAIXO <=
=> Quando tento mover algo para o campo da segunda tela.
=> É como se o campo itemcodi não existisse no IE.Document.All


' Preenche dados da tela de defeitos para fornecedor.
IE.Document.all("itemcodi").innerText = "12345"

End Sub


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.


Renato_TC
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qui Jun 23, 2016 4:37 pm

Re: Macro para acessar sistema online e input de dados

Mensagem por Renato_TC »

Estou colocando um printscreen da segunda tela.
Anexos
Tera inspeçao.png
Tera inspeçao.png (126.36 KiB) Exibido 4902 vezes


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: Macro para acessar sistema online e input de dados

Mensagem por Mikel Silveira Fraga »

Renato, boa noite e seja bem vindo ao fórum

Cara, pelo que vi no código que você passou, essa estrutura esta utilizando uma divisão de páginas, através de um recurso do Html chamado Frame.

Por exemplo, suponhamos que o site que esta acessando seja o Index.asp, mas que esteja utilizando um Frame para carregar várias páginas separadamente, como se o Menu fosse uma página, o Cabeçalho outra e o Rodapé outra.

Na imagem do código que você passou, existe uma parte com um #document. Veja que logo abaixo dessa linha, se inicia uma nova Tag Html, referente a um outro documento, no caso o documento que tem a Caixa de Texto que deseja preencher.

O erro esta no carregamento da segunda página, no IE.Navigate.

Uma possibilidade, e digo possibilidade pois é muito complicado definir um código de Interação entre VBA e Internet Explorer sem teste, é carregar o endereço da página (SRC) do Frame em uma variável e tentar navegar nesse endereço.

Para fazer isso, pode adaptar o código abaixo:

Código: Selecionar todos

Dim objElement As Object
Dim objElementCol As Object

Set objElementCol = ie.Document.getElementsByTagName("frame")
For Each objElement In objElementCol

    If objElement.Name = "tela_de_saidas_defeitos" Then
        Dim strEndFrame As String
        strEndFrame = objElement.src
    End If
    
Next objElement
Depois se o comando acima der certo, utilize o IE.Navigate strEndFrame, para carregar a página e dar continuidade ao preenchimento.

Como disse, não sei se vai funcionar, já que não tem como testar, mas fica a dica.

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.


Responder