Дані XML з однієї комірки Excel до нового файлу XML [закрито]


0

У A1, A2, A3 ... A16000 я маю весь контекст XML в одній комірці.

Приклад: Весь XML для одного рахунка-фактури знаходиться в A1, наступний рахунок-фактура в A2 і так далі.

Як я можу зберегти контекст кожної комірки в окремі файли XML?

Я спробував витягти відповідні дані безпосередньо з комірки, використовуючи "filterxml", але я зіткнувся з неприємностями, коли інновація містила рядки пунктів.


1
У вас є зразок коду, який ви пробували?
Terry

= FILTRERXML ($ A2; B $ 1) - У B1 я маю "// cac: Item / cbc: Description". Я можу зробити його масивом, і тоді він тягне всю інформацію, але не всі рахунки мають однакову кількість рядків.
Claes Thaysen

FILTERXML не є стандартною функцією в Excel, боюся, що ми не можемо допомогти вам у цьому, не знаючи цього. Найкращим варіантом було б зв'язатися з його автором.
Máté Juhász

Це виглядає як FILTERXML функція, доступна в окремих версіях Excel, починаючи з 2013 року.
fixer1234

Відповіді:


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

EDIT: Я думаю, що деякі програми можуть не інтерпретувати його правильно, оскільки вони очікують кодування 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

Дякую! Я отримую помилку розбору. Тому, ймовірно, це не є дійсним XML. Я додаду приклад вмісту однієї клітини
Claes Thaysen

& lt;? xml version = "1.0" encoding = "UTF-8"? & gt; & lt; Invoice xsi: schemaLocation = "urn: oasis: імена: специфікація: ubl: схема: xsd: Invoice-2 UBL-Invoice-2.0. xsd "xmlns =" ​​urn: oasis: імена: специфікація: ubl: схема: xsd: Invoice-2 "xmlns: xsi =" w3.org/2001/XMLSchema "xmlns: cac =" urn: oasis: імена: специфікація: ubl: схема: xsd: CommonAggregateComponents-2 "xmlns: cbc =" urn: оазис: імена: специфікація: ubl: схема: xsd: CommonBasicComponents-2 "xmlns: ccts = "urn: oasis: імена: специфікація: ubl: схема: xsd: CoreComponentParameters-2" xmlns: sdt = "urn: оазис: імена: специфікація: ubl: схема: xsd: SpecializedDatatypes-2"
Claes Thaysen

@ClaesThaysen Відредагуйте його у своє запитання :) Занадто довго для коментаря
Jonno

@ClaesThaysen Я тільки що перевірив його в XML-редакторі і, здається, читати його добре? i.imgur.com/gyUNLvC.jpg
Jonno

1
@Prasanna Я використовую Windows 10 теж. Ви видалили On Error рядок, тоді ви повинні отримати код помилки. Інші мудрі Я не знаю, якщо ви, можливо, щось пропустили на налаштування шляху папки, він може працювати просто не в місці, яке ви очікували! Різниця в кодових блоках полягає в тому, що другий явно використовує UTF-8 (я поставив лінію між ними з коротким поясненням, але, можливо, це може бути ясніше!)
Jonno
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.