WebScraping com QueryTable – Informações na WEB com VBA

Hoje eu quero te mostrar o webscraping com QueryTable para facilitar a busca de informações na web com o VBA!

Em resumo: o WebScraping com QueryTable no VBA importa dados de uma página web direto para o Excel de forma automática. Você cria uma QueryTable apontando para a URL, o VBA baixa o conteúdo da página e organiza as informações na planilha, facilitando a coleta recorrente de dados sem copiar e colar manualmente.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

O que você aprende neste vídeo

Resposta rápida: Nesta aula, o instrutor mostra o jeito mais fácil de buscar informações da web no Excel, trazer tabelas de um site direto para a planilha, sem programar. Ele usa o recurso de conexão do Excel (QueryTable), mostra como deixar o site como um parâmetro (para trocar a fonte sem mexer no código), limpar as conexões antigas e atualizar os dados.

Neste vídeo (16 min):

  • 0:00 - O objetivo: buscar informações de um site direto para o Excel (web scraping).
  • 2:00 - Trazer as tabelas do site para a planilha, de forma rápida e simples.
  • 8:00 - Deixar o site como um parâmetro (para trocar a fonte sem mexer no código).
  • 12:00 - Limpar as conexões antigas antes de criar a nova.
  • 14:00 - Atualizar os dados e o método XMLHTTP.

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala, Impressionadores! Na aula de hoje eu quero te mostrar como buscar informações na web com VBA de uma forma muito fácil e rápida!

Vamos buscar informações na web com QueryTable. Como exemplo vamos entrar em um site e trazer uma tabela em HTML (não vamos tratar sobre esse tema).

Com isso nós vamos poder trazer tabela para o Excel de uma forma muito rápida, podendo escolher se quer uma tabela específica, se quer todas as tabelas ou todas as informações da página.

Para essa aula nós vamos utilizar o webscraping com selenium que vai permitir com que o VBA faça a interação com o seu navegador e possibilite a aquisição dessas informações.

Vamos falar também sobre declaração de variáveis no VBA, estrutura de repetição for each e muito mais!

Ícone VBAVBA Impressionador

Como automatizar praticamente qualquer tarefa repetitiva que você faça dentro do Excel. Aprenda a criar integrações do Excel com o PowerPoint, Word, Outlook e muito mais. Aprenda a criar automações para resolver tudo com apenas um clique em um botão. Tudo isso com uma única linguagem que junta todos esses programas.

Começar agoraSeta para a direita
Fundo VBATelas VBA

E aí vamos aprender fazer o webscraping com QueryTable para deixar suas buscas muito mais rápidas e eficientes?

Inserindo um Módulo no VBA

Para criar um código dentro do VBA geralmente criamos um módulo. Para criá-lo precisamos primeiramente abrir o ambiente de VBA, a partir do atalho do teclado Alt(+Fn)+F11.

Vamos na guia Inserir > Módulo, e uma caixa branca se abrirá.

WebScraping com QueryTable

Por padrão ele terá o nome de “Módulo 1”. Colocaremos a seguinte sub dentro dele:

VBA
<strong>Sub WebScraping()</strong>

<strong>Dim urlSite As String</strong>
<strong>Dim tabela As QueryTable</strong>
<strong>Dim tabelaExistente As QueryTable</strong>

<strong>For Each tabelaExistente In Sheets("Dados").QueryTables</strong>
<strong>    tabelaExistente.Delete</strong>
<strong>Next</strong>

<strong>Sheets("Dados").Cells.Delete shift:=xlUp</strong>

<strong>urlSite = "https://www.w3schools.com/html/html_tables.asp"</strong>

<strong>Set tabela = Sheets("Dados").QueryTables.Add("URL;" & urlSite, Sheets("Dados").Range("A1"))</strong>

<strong>tabela.WebSelectionType = xlEntirePage</strong>
<strong>tabela.WebFormatting = xlWebFormattingNone</strong>
<strong>tabela.Refresh</strong>

<strong>End Sub</strong>

Explicação do código acima:

  • Vamos dimensionar:
    • A variável urlSite como uma variável do tipo String (texto)
    • A variável tabela como uma variável do tipo QueryTable (conexão de tabela)
    • A variável tabelaExistente como uma variável do tipo QueryTable (conexão de tabela)
  • Usar de uma estrutura de repetição do tipo For Each, que vai utilizar da variável tabelaExistente como um objeto individual (parte) percorrer todas as QueryTables (grupo de tabelas-conexões; grupo). A estrutura fará a seguinte ação:
    • Apagará a tabelaExistente, caso haja
    • Percorrerá todas as QueryTables do arquivo
  • Depois de limpar todas as conexões, vamos limpar (Delete) as células presentes na aba “Dados”, colocando os dados para cima (xlUp) quando fizer a exclusão das células
  • Armazenar na variável urlSite o site a ser acessado, que vai ser o “https://www.w3schools.com/html/html_tables.asp”
  • Vamos configurar a variável tabela para representar o objeto que vai ser adicionado (do inglês add) a tabela-conexão feita na aba “Dados”, na célula A1, que vai ser obtida da URL dada pela variável urlSite
  • Vamos configurar a tabela para fazer o tipo de seleção da página inteira
  • A tabela-conexão resultante vai pegar o conteúdo da página inteira sem a formatação original
  • Atualizar (refresh, em inglês) tabela
  • Se encerra o código

OBS: Para entender melhor sobre declaração de variáveis, recomendamos esse outro post aqui do Blog.

OBS1: Para entender melhor sobre a estrutura de repetição For Each, recomendamos esse outro post do Blog.

Observe a nossa planilha antes de rodar o código:

WebScraping com QueryTable

Agora, após rodar o código para buscar informações na web com VBA:

WebScraping com QueryTable

Conclusão – WebScraping com QueryTable

Nessa aula você lidou com:

  • Ambiente do VBA
  • Webscraping com VBA
  • Webscraping com QueryTable
  • Trazer tabela para o Excel
  • Pegar tabelas de uma página da internet
  • Declaração de variáveis no VBA

Até a próxima, Impressionadores! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA!

Perguntas frequentes

1. O que é QueryTable no VBA?

QueryTable é um objeto do Excel que importa dados de fontes externas — páginas web, arquivos de texto ou bancos de dados — direto para a planilha. No webscraping, ela busca o conteúdo de uma URL e organiza os dados retornados em células.

2. QueryTable funciona em qualquer site?

Funciona bem em páginas com dados em tabelas HTML e conteúdo estático. Sites que carregam a informação por JavaScript depois do carregamento inicial podem não retornar os dados pela QueryTable — nesses casos, Selenium no VBA ou Python costumam ser mais indicados.

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um Minicurso Gratuito?