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.

VBA Interação com a Web - Selecionar, copiar e colar parte de um conteúdo de uma página web.

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.
DaHoraBA
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Ter Jan 07, 2020 12:19 pm

VBA Interação com a Web - Selecionar, copiar e colar parte de um conteúdo de uma página web.

Mensagem por DaHoraBA » Qui Jan 09, 2020 4:26 am

Prezados,

Tenho pesquisado na internet uma forma de selecionar uma parte de uma página web, para copiar esse conteúdo para a área de transferência e colar o conteúdo copiado em diversos aplicativos, como Excel, Word, Bloco de Notas...

A ideia é selecionar tudo que estiver dentro de uma determinada tag numa página web, como:

Código: Selecionar todos

<div> ----- </div>, 
<table> ----- </table>, 
<img ---->,
<div><img ---><table><tr><td>------</td></tr></table></div>
O elemento em que tenho interesse de selecionar na página web eu consigo obter com o código abaixo:

Código: Selecionar todos

Private aIE As InternetExplorer

Public Sub Main()
	Dim obj As Object
		
	Set obj = Elemento("img",10)	'#  décima imagem do documento
	Set obj = Elemento("div",20)	'#  vigésima "div" do documento
	Set obj = Elemento("table",5)	'#  quinta tabela do documento
	'obj.Focus		'#  O método focus não seleciona o elemento.
	.
	.
End Sub

Private Function Elemento(Tag As String, Ocorrencia As Integer) As Object
    Set Elemento = IE.Document.all.tags("" & Tag)(Ocorrencia) '#  Se não colocar "" & Tag, gera erro.
End Function

Private Function IE() As InternetExplorer
    If (aIE Is Nothing) Then
        Set aIE = New InternetExplorer
        aIE.Visible = True
        aIE.Navigate "Endereço de uma página web."
        Do While (aIE.Busy) Or (aIE.ReadyState <> READYSTATE_COMPLETE)
            VBA.DoEvents
        Loop
    End If
    Set IE = aIE
End Function
Mais não sei como selecionar o elemento.

Das pesquisas realizadas, destaco:
Sendo IE uma instância do InternetExplorer, o comando "IE.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT" seleciona todo o conteúdo da página ativa da web.

Já o comando "IE.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT" copia o conteúdo selecionado na página ativa da web, para a área de transferência. Portanto, a parte de copiar o conteúdo selecionado está superado.

Para colar o conteúdo da área de transferência o método a ser utilizado depende do aplicativo em que esse dado será inserido. Como: "wks.Paste", sendo wks uma instância do Excel.Worksheet, no excel.

Outro forma de colar o conteúdo da área de transferência é fazendo o uso do objeto DataObject.

Código: Selecionar todos

	Dim MyData as DataObject
	Dim sTexto  As String
	
	Set MyData = New DataObject
	MyData.GetFromClipboard   '#  Captura o conteúdo da área de transferência.
	sTexto = MyData.GetText     '#  Insere em sTexto apenas o texto do conteúdo da área de transferência.

Mas se o objeto da área de transferência for apenas uma imagem não sei como fazer para inserir esse conteúdo em uma variável.

Resumindo: A quem possa, gostaria de saber como faço para selecionar uma parte de uma página web e como consigo atribuir a uma variável uma imagem que esteja na área de transferência.

Grato pela atenção e colaboração.



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