В А1, А2, А3 ... A16000 У меня есть весь контекст XML в одной ячейке.

Пример: весь XML для одного счета находится в A1, следующий счет в A2 и так далее.

Как я могу сохранить контекст каждой ячейки в отдельных файлах XML?

Я попытался извлечь соответствующие данные непосредственно из ячейки, используя "filterxml", но столкнулся с проблемой, когда в инвойсе содержалось несколько строк товара.

1 ответ1

2

Предполагая, что весь XML действительно является допустимым форматом XML, и вам просто нужно экспортировать каждую ячейку как отдельный файл, вы можете использовать следующий 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

РЕДАКТИРОВАТЬ: Я думаю, что некоторые программы, возможно, не интерпретируют это правильно, поскольку они ожидают кодировку UTF-8. Попробуйте этот код вместо этого:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .