VBA – Macro para exportar dados em XML no Excel

A partir da versão 2002 (XP), o Excel, bem como todos os programas do Office ganharam uma séria de artimanhas para manipular, importar, exportar e trabalhar no padrão XML.

Isso é bom e poderoso, mas tentando fazer uma exportação simples de uma planilha em um arquivo XML, naveguei pelas opções que o Excel oferecia e no final, acabei optando por fazer a exportação por VBA, já que precisava de algo rápido do “limpo”.

Não usei classes ou bibliotecas específicas para o trabalho. A criação do XML foi na mão mesmo. Abaixo segue o código que faz o trabalho:

Sub ExportToXml()
    Dim linha As Long, coluna As Long, colunas As Long
    linha = 2
    colunas = ActiveSheet.UsedRange.Columns.Count
    Set fs = CreateObject("Scripting.FileSystemObject")
 
    Set a = fs.CreateTextFile(ThisWorkbook.FullName & ".xml", True)
    'cria as primeiras linhas
    a.WriteLine ("<?xml version=""1.0"" encoding=""UTF-8""?>")
    a.WriteLine ("<" & ActiveSheet.Name & "s>")
 
    With ActiveSheet
        Do While Not IsEmpty(.Cells(linha, 1))
            a.WriteLine (Chr(9) & "<" & ActiveSheet.Name & ">")
 
            For coluna = 1 To colunas Step 1
                a.Write (Chr(9) & Chr(9) & _
                "<" & .Cells(1, coluna).Value & ">" & _
                RTrim(.Cells(linha, coluna).Value) & _
                "</" & .Cells(1, coluna).Value & ">" & Chr(13))
            Next
 
            a.WriteLine (Chr(9) & "</" & ActiveSheet.Name & ">")
            linha = linha + 1
        Loop
    End With
 
    'finaliza o arquivo
    a.WriteLine ("</" & ActiveSheet.Name & "s>")
    a.Close
 
    MsgBox "Finito!"
End Sub

Em detalhes, a macro navega a partir da segunda linha (a primeira deve ter os cabeçalhos ok?) e constrói o XML, sendo que os nós considerarão o nome da planilha, pluralizando-a, por exemplo, se o nome da planilha for Usuario, ele criará o nó Usuarios e cada elemento/linha como Usuario. O arquivo gerado tem o mesmo nome da planilha, mas com a extensão XML. De quebra, o XML vai indentado.

Uma mão na roda para exportação de dados limpos. Faça o teste e, bom proveito.

Comentários

comentários