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
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Macro para acessar sistema online e input de dados
Re: Macro para acessar sistema online e input de dados
Estou colocando um printscreen da segunda tela.
- Anexos
-
- Tera inspeçao.png (126.36 KiB) Exibido 4902 vezes
- Mikel Silveira Fraga
- 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
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:
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.
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
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.