Blog

Postado em em 29 de outubro de 2022

Como Importar XML para o Excel com um Botão Usando VBA

Quer aprender como importar XML para o Excel de uma forma fácil e rápida utilizando o VBA? Vamos fazer isso com um botão!

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

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

Fala, Impressionadores! Na aula de hoje vamos te mostrar como fazer a importação de XML para Excel com VBA!

Isso mesmo, vamos importar XML para Excel com VBA. Muitos de vocês pediram e hoje eu vou mostrar o código para importar XML.

Você vai ver que consegue importar as informações de forma rápida com apenas o clique de um botão, usando umam macro para importar XML!

Vamos lá ver como importar XML com VBA?

O que é XML?

Extensible Markup Language (XML) é uma linguagem de marcação recomendada para a criação de documentos organizados hierarquicamente.

É uma forma particular de organizar hierarquicamente itens, que mostramos em exemplo a seguir, para o arquivo de aula:

Importação de XML para o Excel
Importação de XML para o Excel

A ideia aqui é entender que existem itens mais internos, na hierarquia, e itens mais externos.

Queremos, que cada item seja separado em colunas no Excel, ao serem importados.

Abaixo mostramos a tabela que vai receber os dados da importação XML VBA:

1 9

A seguir temos o código responsável por fazer essa importação XML Excel. Vamos acompanhar o código e seus comentários:

Sub importarXML()
'Importar a referência Microsoft XML, v6.0

Dim caminhoXML As String
Dim arqXML As New MSXML2.DOMDocument60
Dim CDs As MSXML2.IXMLDOMNode, CD As MSXML2.IXMLDOMNode
Dim linha As Long

With Application.FileDialog(msoFileDialogFilePicker)
    'Selecionar apenas um arquivo
    .AllowMultiSelect = False

    'Exibir apenas os arquivos de tipo .XML
    .Filters.Add "Arquivos XML", "*.xml", 1

    'Editar o título da caixa de seleção
    .Title = "Escolha um arquivo XML"    

    'Exibir a caixa de seleção
    .Show

    'Guardar o caminho do arquivo selecionado
    caminhoXML = .SelectedItems.Item(1)

End With

arqXML.Load (caminhoXML)

Set CDs = arqXML.SelectSingleNode("CATALOG")


linha = 2

For Each CD In CDs.ChildNodes
    Cells(linha, 1).Value = CD.SelectSingleNode("TITLE").Text
    Cells(linha, 2).Value = CD.SelectSingleNode("ARTIST").Text
    Cells(linha, 3).Value = CD.SelectSingleNode("COUNTRY").Text
    Cells(linha, 4).Value = CD.SelectSingleNode("COMPANY").Text
    Cells(linha, 5).Value = CD.SelectSingleNode("PRICE").Text
    Cells(linha, 6).Value = CD.SelectSingleNode("YEAR").Text
    linha = linha + 1
Next

Set arqXML = Nothing
Set CD = Nothing
Set CDs = Nothing

End Sub

Comentários a respeito do código para importar XML:

  • Fazemos o lembrete de ativar a referência XML de qualquer versão no seu VBA, como mostramos na videoaula
  • Dimensionar as variáveis:
    • “arqXML” como um novo objeto MSXML2.DOMDocument60
    • “CDs” como um objeto MSXML2.IXMLDOMNode
    • “CD” como um objeto MSXML2.IXMLDOMNode
    • “linha” como um objeto do tipo Long (número grande)
  • Vamos abrir a caixa de diálogo do Excel, com o comando/argumento para pegar/selecionar um arquivo (XML a ser importado)
    • Permitir apenas a seleção única (seleção múltipla configurada para ser falsa)
    • Permitir apenas arquivos com a extensão .XML
    • Configurar o título da caixa de diálogo como “Escolha um arquivo XML”
    • Mostrar a caixa de diálogo para o usuário escolher o arquivo a ser importado
    • Armazenar na variável “caminhoXML” o caminho completo do arquivo selecionado (item a ser selecionado na caixa de diálogo)

Observe abaixo a caixa de diálogo de exemplo gerada pelo código:

2 8
  • Em seguida da escolha do arquivo, o arquivo será carregado para o VBA a partir do seu caminho de pasta, no computador
  • Configurar a variável “CDs” para receber o “nó” do arquivo XML representado pelo nó “CATALOG” (que contém todos os CDs e todos itens mais internos), uma variável complexa que abrange todos os objetos do XML
  • Armazenar na variável “linha” o valor 2
  • Utilizar de uma estrutura de repetição do tipo For Each, que vai varrer de CD em CD, que são os “nós” mais internos (ou filhos, child em inglês) do “CATALOG” (representado pela variável CDS), fazendo as ações:
    • Armazenar na célula de linha dada pela variável “linha”, e coluna A (1) o valor dado pelo texto retirado pelo nó “TITLE” mais interno, do XML
    • Armazenar na célula de linha dada pela variável “linha”, e coluna B (2) o valor dado pelo texto retirado pelo nó “ARTIST” mais interno, do XML
    • Armazenar na célula de linha dada pela variável “linha”, e coluna C (3) o valor dado pelo texto retirado pelo nó “COUNTRY” mais interno, do XML
    • Armazenar na célula de linha dada pela variável “linha”, e coluna D (4) o valor dado pelo texto retirado pelo nó “COMPANY” mais interno, do XML
    • Armazenar na célula de linha dada pela variável “linha”, e coluna E (5) o valor dado pelo texto retirado pelo nó “PRICE” mais interno, do XML
    • Armazenar na célula de linha dada pela variável “linha”, e coluna F (6) o valor dado pelo texto retirado pelo nó “YEAR” mais interno, do XML
    • Adicionar 1 unidade na variável “linha”, para podermos ir para a próxima linha de registro de informações
  • Esvaziar as variáveis “arqXML”, “CD” e “CDs” da memória do computador
  • Se encerra o código

Após rodar o código, apertando no botão de “Importar XML”, teremos rapidamente a tabela preenchida que queríamos, inicialmente. Veja:

3 5

Conclusão – Como Importar XML para o Excel

Na aula de hoje você aprendeu a importar XML com VBA!

Você manipulou um arquivo XML em VBA, e conseguiu importar as informações diretamente do XML para Excel!

Até o próximo post! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA! Um abraço!

Hashtag Treinamentos

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


Quer aprender mais sobre VBA com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador