У меня довольно большой xml-файл, который я хочу импортировать в существующий файл Excel, на конкретный лист. Мой собственный код довольно вялый. Я пытался использовать метод openXml, но это приводит к неиспользуемому выводу
Код, который я пробовал (и работает, но он очень медленный), указан здесь. XML-файл содержит около 10000 элементов, для каждого элемента есть еще 22 значения, которые мне нужны. Если я запускаю этот код, Excel занимает около 2 или 3 минут, чтобы поместить все данные в таблицу, что не совсем приемлемо.
Сам файл немного плохо отформатирован, с двумя отдельными xml-списками в один xml-файл. Я не могу контролировать это достаточно печально.
Я также пытался использовать опцию workbook.openXML, но она сталкивается с двумя различными структурами xml, которые находятся в исходном файле, что делает его довольно непригодным для меня, если я не трачу больше времени на очистку этой таблицы, но это не действительно аккуратное решение.
(я не разместил здесь XML, так как это данные компании).
XDoc.Load (strPath)
Set inputXML = XDoc.SelectNodes("//<nodes_i_need>")
xmllengte = Int(inputXML.Length)
ReDim listinputXML(xmllengte, 22)
xmlTeller = 0
For Each element In inputXML:
listinputXML(xmlTeller, 0) = element.ChildNodes(0).Text
listinputXML(xmlTeller, 1) = element.ChildNodes(1).Text
listinputXML(xmlTeller, 2) = element.ChildNodes(2).Text
listinputXML(xmlTeller, 3) = element.ChildNodes(3).Text
listinputXML(xmlTeller, 4) = element.ChildNodes(4).Text
listinputXML(xmlTeller, 5) = element.ChildNodes(5).Text
listinputXML(xmlTeller, 6) = element.ChildNodes(6).Text
listinputXML(xmlTeller, 7) = element.ChildNodes(7).Text
listinputXML(xmlTeller, 8) = element.ChildNodes(8).Text
listinputXML(xmlTeller, 9) = element.ChildNodes(9).Text
listinputXML(xmlTeller, 10) = element.ChildNodes(10).Text
listinputXML(xmlTeller, 11) = element.ChildNodes(11).Text
listinputXML(xmlTeller, 12) = element.ChildNodes(12).Text
listinputXML(xmlTeller, 13) = element.ChildNodes(13).Text
listinputXML(xmlTeller, 14) = element.ChildNodes(14).Text
listinputXML(xmlTeller, 15) = element.ChildNodes(15).Text
listinputXML(xmlTeller, 16) = element.ChildNodes(16).Text
listinputXML(xmlTeller, 17) = element.ChildNodes(17).Text
listinputXML(xmlTeller, 18) = element.ChildNodes(18).Text
listinputXML(xmlTeller, 19) = element.ChildNodes(19).Text
listinputXML(xmlTeller, 20) = element.ChildNodes(20).Text
listinputXML(xmlTeller, 21) = element.ChildNodes(21).Text
xmlTeller = xmlTeller + 1
Next element
Sheets("testing").Range("A2", CStr("V" & inputXML.Length)) = listinputXML