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

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 »

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 10260 vezes
COD 1.png
COD 1.png (157.91 KiB) Exibido 10260 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: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Acessar Frame via VBA Excel

Mensagem por Mikel Silveira Fraga »

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.


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 »

Prezado,

Estou utilizando Internet Control.

Att,


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

Re: Acessar Frame via VBA Excel

Mensagem por webmaster »

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


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 »

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 10230 vezes


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

Re: Acessar Frame via VBA Excel

Mensagem por PRMPOKER »

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!


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 »

PRMPOKER

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

Grato, :D


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

Re: Acessar Frame via VBA Excel

Mensagem por PRMPOKER »

Bom dia gttj,

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

Um abraço!


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

Re: Acessar Frame via VBA Excel

Mensagem por PRMPOKER »

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?

:)


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

Re: Acessar Frame via VBA Excel

Mensagem por PRMPOKER »

Bom dia meu amigo, tudo bem?

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

:D :D :D


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