Dados XML de uma célula do Excel para um novo arquivo XML [fechado]

0

Em A1, A2, A3 ... A16000 Eu tenho todo o contexto de um XML em uma célula.

Exemplo: todo o XML de uma fatura está em A1, a próxima fatura em A2 e assim por diante.

Como eu poderia salvar o contexto de cada célula em arquivos XML separados?

Eu tentei extrair os dados relevantes diretamente da célula usando "filterxml", mas tive problemas quando a inovação continha várias linhas de itens.

    
por Claes Thaysen 10.02.2016 / 09:54

1 resposta

2

Supondo que o XML inteiro é de fato um formato XML válido e você simplesmente precisa exportar cada célula como seu próprio arquivo, você pode usar o seguinte VBA:

Sub ExportCellsToXMLFiles()
    On Error GoTo err:
    Dim OutputFolder: OutputFolder = "D:\Test\XML\" 'Specify a valid dir to output to - make sure you include the trailing slash.
    Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim objFile
    Dim Count: Count = 1 'Row number to start on
    Do
        Set objFile = objFSO.CreateTextFile(OutputFolder & "Invoice_" & Count & ".xml", False, True) ' You can change the file names if needed here
        objFile.Write (Cells(Count, 1).Value)
        objFile.Close
        Count = Count + 1
    Loop Until IsEmpty(Cells(Count, 1).Value)

err:
    Set objFile = Nothing
    Set objFSO = Nothing
End Sub

EDIT: Eu acho que certos programas podem não estar interpretando corretamente como eles esperam um caractere UTF-8. Experimente este código:

Sub ExportCellsToXMLFiles()
    On Error GoTo err:
    Dim OutputFolder: OutputFolder = "D:\Test\XML\"
    Dim fsT As Object
    Dim Count: Count = 1
    Do
        Set fsT = CreateObject("ADODB.Stream")
        fsT.Type = 2
        fsT.Charset = "utf-8"
        fsT.Open
        fsT.WriteText (Cells(Count, 1).Value)
        fsT.SaveToFile OutputFolder & "Invoice_" & Count & ".xml", 2
        Count = Count + 1
    Loop Until IsEmpty(Cells(Count, 1).Value)

err:
    Set fsT = Nothing
End Sub
    
por 10.02.2016 / 10:13