Página 1 de 1

[Resolvido] VBA para Importar intervalo de Dados da tabela Web

Enviado: Qui Mar 26, 2020 1:19 am
por Mathmatic
Saudações amigos,

encontrei um ótimo código VBA para Importar Dados da Web para o Excel neste link aqui.

agora, eu desejo muito usar este mesmo código VBA do Link mencionado acima, para importar para o Excel os Dados da tabela: Historical Data (de 7 colunas) que está neste site aqui.

Se possível fosse, adaptar o código VBA do Link, para Importar os Dados da tabela do site com critério de intervalo de Mês/Ano à Mês/Ano.

Por exemplo:
Poder importar da tabela somente os Dados que vão de Fevereiro de 2020 até Setembro de 2019, ou seja, poder definir um intervalo de Período que vai de mês/ano à mês/ano, para importar dos Dados.

desde já agradeço a vossa ajuda.

Re: ajustar VBA para Importar intervalo de Dados da tabela Web

Enviado: Qui Mar 26, 2020 4:26 pm
por webmaster
Assim?

Código: Selecionar todos

'@Folder("VBAProject")
Option Explicit
 'reference to Microsoft Internet Controls
 'reference to Microsoft HTML Object Library

Sub Web_Table_Option_One()
Dim xml    As Object
Dim html   As Object
Dim objTable As Object
Dim result As String
Dim lRow As Long
Dim lngTable As Long
Dim lngRow As Long
Dim lngCol As Long
Dim ActRw As Long
Set xml = CreateObject("MSXML2.XMLHTTP.6.0")
With xml
.Open "GET", "https://finance.yahoo.com/quote/%5EGSPC/history?p=%5EGSPC#mrt-node-Col1-1-HistoricalDataTable", False
.send
End With
result = xml.responseText
Set html = CreateObject("htmlfile")
html.body.innerHTML = result
Set objTable = html.getElementsByTagName("table")
 For lngTable = 0 To objTable.Length - 1
        For lngRow = 0 To objTable(lngTable).Rows.Length - 1
            For lngCol = 0 To objTable(lngTable).Rows(lngRow).Cells.Length - 1
                ThisWorkbook.Sheets(1).Cells(ActRw + lngRow + 1, lngCol + 1) = objTable(lngTable).Rows(lngRow).Cells(lngCol).innerText
            Next lngCol
        Next lngRow
        ActRw = ActRw + objTable(lngTable).Rows.Length + 1
    Next lngTable
End Sub

Re: ajustar VBA para Importar intervalo de Dados da tabela Web

Enviado: Qui Mar 26, 2020 4:58 pm
por Mathmatic
Saudações webmaster,

agradeço desde já por querer me ajudar . :)

apliquei o seu código modelo proposto (conforme planilha em anexo).

se observar, o código importou mais dados do que deveria importar.

a região que eu desejo importar está com preenchimento em "azul".

também seria muito bom conseguir importar somente uma parte da tabela, conforme mencionei anteriormente (critério com data inicial e data final para importar).

Re: ajustar VBA para Importar intervalo de Dados da tabela Web

Enviado: Qui Mar 26, 2020 6:45 pm
por webmaster
Mathmatic,

O que fiz foi plantar a semente. O que pede é mais simples do que o primeiro tópico. Com um pouco mais de esforço, conseguirá o que quer :)