Здравствуйте, есть задача создать реестр из кучи документов .xml со значениями из нескольких параметров. чтобы не копировать каждое надо написать макрос, который бы вытаскивал необходимые значения из указанного .xml-файла и вставлял их в таблицу. предположительно это должно выглядеть в следующей форме: в столбце А указывается путь к xml, из которого будет заполнятся соответствующая ячейке строка таблицы. Версия Excel -2010. Подскажите пожалуйста, как это реализовать, заранее спасибо
Здравствуйте, есть задача создать реестр из кучи документов .xml со значениями из нескольких параметров. чтобы не копировать каждое надо написать макрос, который бы вытаскивал необходимые значения из указанного .xml-файла и вставлял их в таблицу. предположительно это должно выглядеть в следующей форме: в столбце А указывается путь к xml, из которого будет заполнятся соответствующая ячейке строка таблицы. Версия Excel -2010. Подскажите пожалуйста, как это реализовать, заранее спасибоMolotoklk
например файл Xml <ReferenceMark>, при этом В ячейке В1 должен прописываться текст: "Воронежская область Кантемировский район, северная часть кадастрового квартала 36:12:61 00016" <Note> - в С1 "обл. Воронежская, р-н Кантемировский, с. Писаревка" и т.п. какие функции для этого используются в VBA?
например файл Xml <ReferenceMark>, при этом В ячейке В1 должен прописываться текст: "Воронежская область Кантемировский район, северная часть кадастрового квартала 36:12:61 00016" <Note> - в С1 "обл. Воронежская, р-н Кантемировский, с. Писаревка" и т.п. какие функции для этого используются в VBA?Molotoklk
Половину кода Вы уже видели у Казанского, половину я свою дописал Но тут теги чувствительны к регистру! [vba]
Код
Option Explicit
'http://www.xmlfiles.com/dom/dom_access.asp
Sub GetXML() Dim arFiles, x, lRow&, c As Range arFiles = Application.GetOpenFilename("XML files,*.xml", , "Выберите файлы", , True) If Not IsArray(arFiles) Then Exit Sub lRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count For Each x In arFiles For Each c In [b1:e1].SpecialCells(xlCellTypeConstants) Cells(lRow, c.Column) = FindTag(x, (c)) Next lRow = lRow + 1 Next End Sub
Private Function FindTag$(ByRef ff, ByRef sTag$)
With CreateObject("Microsoft.XMLDOM") .async = "false" .Load (ff) FindTag = .getElementsByTagName(sTag).Item(0).Text End With
End Function
[/vba]
Половину кода Вы уже видели у Казанского, половину я свою дописал Но тут теги чувствительны к регистру! [vba]
Код
Option Explicit
'http://www.xmlfiles.com/dom/dom_access.asp
Sub GetXML() Dim arFiles, x, lRow&, c As Range arFiles = Application.GetOpenFilename("XML files,*.xml", , "Выберите файлы", , True) If Not IsArray(arFiles) Then Exit Sub lRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count For Each x In arFiles For Each c In [b1:e1].SpecialCells(xlCellTypeConstants) Cells(lRow, c.Column) = FindTag(x, (c)) Next lRow = lRow + 1 Next End Sub
Private Function FindTag$(ByRef ff, ByRef sTag$)
With CreateObject("Microsoft.XMLDOM") .async = "false" .Load (ff) FindTag = .getElementsByTagName(sTag).Item(0).Text End With