ATENÇÃO NOVOS USUÁRIOS

Se registrou recentemente? Seu cadastro será avaliado e mendiante aprovação, a conta será ativada e você poderá usufruir do fórum. O tempo de avaliação gira em torno de 24 a 48 horas.

Esqueceu sua senha?

Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

Acessar Frame via VBA Excel

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.
gttj
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qua Mar 08, 2017 9:52 am

Acessar Frame via VBA Excel

Mensagem por gttj » Sex Set 22, 2017 9:26 am

Prezados,

Estou tentando acessar um Frame que esta dentro de de um Framset que, por sua vez, esta dentro de um Iframe. Consigo chegar até o iframe, mas, não consigo passar a diante. DFetalhes de como está o código da página Web seguem em anexo.

Obs.: Estou me utilizando de somente VBA Excel, ou seja, não estou me utilizando de subterfúgio, como o Selenium, por exemplo.

Desde já grato pela a atenção de todos, :D
Anexos
COD 2.png
COD 2.png (180.42 KiB) Exibido 5848 vezes
COD 1.png
COD 1.png (157.91 KiB) Exibido 5848 vezes



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: 1140
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Betim - MG
Contato:

Re: Acessar Frame via VBA Excel

Mensagem por Mikel Silveira Fraga » Sex Set 22, 2017 9:35 am

Gttj, bom dia.

Você esta utilizando o Selenium (Basic ou VBA) ou o Internet Control?

Caso esteja utilizando o Selenium Basic, veja esse artigo/vídeo do Tomás:
- SELENIUM VBA – COMO EXTRAIR DADOS DE FRAMES

Demais dúvidas, a disposição.


Gostou da dica? Clique no JOIA no topo da mensagem.
Esclareceu suas dúvidas? Acrescente ao título do tópico a expressão: [RESOLVIDO].
Orientações sobre o fórum, acesse aqui.

Mikel Silveira Fraga
E-mail: mikel-sf@hotmail.com | Linked In

gttj
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qua Mar 08, 2017 9:52 am

Re: Acessar Frame via VBA Excel

Mensagem por gttj » Sex Set 22, 2017 9:54 am

Prezado,

Estou utilizando Internet Control.

Att,



Avatar do usuário
webmaster
Administrador
Mensagens: 2828
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Acessar Frame via VBA Excel

Mensagem por webmaster » Sex Set 22, 2017 1:41 pm

Este exemplo deve ajudar:

Código: Selecionar todos

Dim elemCollection As IHTMLElementCollection

Set elemCollection = objDoc.frames("iFrameID").document.all
Debug.Print elemCollection.Item("pagemenuli-adv").innerText


Tomás
https://www.tomasvasquez.com.br/blog
https://www.tomasvasquez.com.br/cursocsharp
https://twitter.com/tomamais
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

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.


gttj
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qua Mar 08, 2017 9:52 am

Re: Acessar Frame via VBA Excel

Mensagem por gttj » Sex Set 22, 2017 5:43 pm

Tomás,

Não tenho Id do Iframe, mas name "supervisaoFrame", já o name frame em que desejo acessar é "esq" e o item dentro dele é tem id "segundo"

iframe algumas propriedades: name = "supervisaoFrame" e src = "supervisao.jsp" -> Até qui eu acesso

frame algumas propriedades: name = "esq" e src = É uma url de sessionid -> Dentro dele é que tenho o elemento que quero acessar que possui o id = "segundo"

Note a imagem abaixo o elemento em que quero clicar

Tentei: Set elemCollection = browser.frames("esq").document.all -> Estou aplicando o name do Frame
Debug.Print elemCollection.Item("segundo").innerText -> Dá erro de "O Objeto não aceita propriedade ou método"

Desde já agradeço,
Anexos
COD 3.png
COD 3.png (126.01 KiB) Exibido 5818 vezes



Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 205
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Acessar Frame via VBA Excel

Mensagem por PRMPOKER » Ter Set 26, 2017 9:59 am

Bom dia meu amigo, tudo bem?

Posso te indicar duas possíveis soluções para teu problema. Utilizo uma função que permite utilizar xpath no IE, e funciona muito bem. Como a tag <TD> que você quer acessar possui ID, possivelmente funcionará para você. Também há uma maneira mais simples de acessar o frame, mas não funciona com todas as estruturas. Quando eu chegar em casa à noite, eu te explico aqui como podemos tentar solucionar.

Um abraço!



Paulinho Monteiro
VBA - Front/BackEnd Developer

Email: falecom@paulinhomonteiro.com
falecompaulinhomonteiro@gmail.com
Whatsapp (54) 9925 340 85
www.paulinhomonteiro.com

gttj
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qua Mar 08, 2017 9:52 am

Re: Acessar Frame via VBA Excel

Mensagem por gttj » Seg Out 02, 2017 10:30 am

PRMPOKER

Gostei desta solução, xpath no IE, poderia postar um exemplo por gentileza.

Grato, :D



Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 205
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Acessar Frame via VBA Excel

Mensagem por PRMPOKER » Ter Out 03, 2017 12:19 pm

Bom dia gttj,

Desculpe pela absoluta falta de tempo. Pretendo postar sim, hoje à noite, um exemplo prático para te ajudar.

Um abraço!



Paulinho Monteiro
VBA - Front/BackEnd Developer

Email: falecom@paulinhomonteiro.com
falecompaulinhomonteiro@gmail.com
Whatsapp (54) 9925 340 85
www.paulinhomonteiro.com

Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 205
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Acessar Frame via VBA Excel

Mensagem por PRMPOKER » Ter Out 03, 2017 9:50 pm

Boa noite meu amigo, tudo bem?

Então, vamos lá: eu utilizo essa função, que permite a utilização do xpath:


Public Function getXPathElement(sXPath As String, objElement As Object) As HTMLBaseElement
Dim sXPathArray() As String

Dim sNodeName As String
Dim sNodeNameIndex As String
Dim sRestOfXPath As String
Dim lNodeIndex As Long
Dim lCount As Long

' Split the xpath statement
sXPathArray = Split(sXPath, "/")
sNodeNameIndex = sXPathArray(1)
If Not InStr(sNodeNameIndex, "[") > 0 Then
sNodeName = sNodeNameIndex
lNodeIndex = 1
Else
sXPathArray = Split(sNodeNameIndex, "[")
sNodeName = sXPathArray(0)
lNodeIndex = CLng(Left(sXPathArray(1), Len(sXPathArray(1)) - 1))
End If
sRestOfXPath = Right(sXPath, Len(sXPath) - (Len(sNodeNameIndex) + 1))

Set getXPathElement = Nothing
For lCount = 0 To objElement.ChildNodes().Length - 1
If UCase(objElement.ChildNodes().Item(lCount).nodeName) = UCase(sNodeName) Then
If lNodeIndex = 1 Then
If sRestOfXPath = "" Then
Set getXPathElement = objElement.ChildNodes().Item(lCount)
Else
Set getXPathElement = getXPathElement(sRestOfXPath, objElement.ChildNodes().Item(lCount))
End If
End If
lNodeIndex = lNodeIndex - 1
End If
Next lCount
End Function


E faço a chamada dela para o elemento que eu quero acessar, conforme abaixo:

Set ele = getXPathElement("/form/table/tbody/tr[1]/td[2]/input[1]", HTMLDoc.getElementById("Layer6"))
If Len(ele) > 0 Then
'Sua ação para o objeto
End If

Aqui vc informa o xpath do objeto: (getXPathElement("/form/table/tbody/tr[1]/td[2]/input[1]")
Aqui vc informa o ID do elemento a ser acessado: (HTMLDoc.getElementById("Layer6")))

Não sei se expliquei bem. Conseguiste entender?

:)



Paulinho Monteiro
VBA - Front/BackEnd Developer

Email: falecom@paulinhomonteiro.com
falecompaulinhomonteiro@gmail.com
Whatsapp (54) 9925 340 85
www.paulinhomonteiro.com

Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 205
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Acessar Frame via VBA Excel

Mensagem por PRMPOKER » Qui Out 05, 2017 10:32 am

Bom dia meu amigo, tudo bem?

Conseguiste resolver o problema? Dá um retorno pra gente aí!

:D :D :D



Paulinho Monteiro
VBA - Front/BackEnd Developer

Email: falecom@paulinhomonteiro.com
falecompaulinhomonteiro@gmail.com
Whatsapp (54) 9925 340 85
www.paulinhomonteiro.com

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