Импорт данных XML в сопоставленный список в Excel 2010
Начало работы с возможностями расширения Excel 2010: импорт данных XML в список Excel 2010, как со схемой сопоставления, так и без нее.
Дата последнего изменения: 9 мая 2011 г.
Применимо к: Excel 2010 | Office 2010 | VBA
В этой статье
Импорт данных XML и схемы XSD для создания сопоставленного списка
Импорт данных XML в существующий сопоставленный список
Импорт данных XML без сопоставления схемы
Дальнейшие действия
В этом упражнении выполняется импорт данных XML программным путем в список Microsoft Excel 2010. Рассматриваются три способа выполнения этой задачи. Для выполнения этой задачи выполните одно или несколько из указанных ниже действий.
Импорт данных XML и схемы XSD для создания сопоставленного списка
Импорт данных XML в существующий сопоставленный список
Импорт данных XML без сопоставления схемы
Примечание
Предполагается, что необходимые XML-файл данных и XSD-файл схемы уже созданы. Сведения о создании этих файлов см. в быстрой заметке Создание схемы сопоставления XML в Excel 2010.
Импорт данных XML и схемы XSD для создания сопоставленного списка
В этой задаче для создания сопоставления XML сначала выполняется импорт XSD-файла схемы в Excel 2010. Затем создается новый список. Наконец, для сопоставления данных XML списку используются операторы XPath.
Создание сопоставленного списка на основе данных XML
Откройте в Excel пустую книгу.
Откройте редактор Visual Basic (VBE), нажав сочетание клавиш ALT + F11.
Вставьте общий модуль, нажав кнопку Вставка и выбрав пункт Модуль.
Вставьте через буфер обмена или введите вручную указанный ниже код.
Sub CreateXMLList() Dim oMyMap As XmlMap Dim strXPath As String Dim oMyList As ListObject Dim oMyNewColumn As ListColumn ' Add a schema map. ' ThisWorkbook.XmlMaps.Add (ThisWorkbook.Path & "\Myschema.xsd") ThisWorkbook.XmlMaps.Add ("C:\BookData.xsd") ' Identify the target schema map. Set oMyMap = ThisWorkbook.XmlMaps("BookInfo_map") ' Create a new list in A1. Range("A1").Select Set oMyList = ActiveSheet.ListObjects.Add ' Find the first element to map. strXPath = "/BookInfo/Book/ISBN" ' Map the element. oMyList.ListColumns(1).XPath.SetValue oMyMap, strXPath ' Add a column to the list. Set oMyNewColumn = oMyList.ListColumns.Add ' Find the next element to map. strXPath = "/BookInfo/Book/Title" ' Map the element oMyNewColumn.XPath.SetValue oMyMap, strXPath ' Add a column to the list. Set oMyNewColumn = oMyList.ListColumns.Add ' Find the next element to map. strXPath = "/BookInfo/Book/Author" ' Map the element. oMyNewColumn.XPath.SetValue oMyMap, strXPath ' Add a column to the list. Set oMyNewColumn = oMyList.ListColumns.Add ' Find the next element to map. strXPath = "/BookInfo/Book/Quantity" ' Map the element. oMyNewColumn.XPath.SetValue oMyMap, strXPath ' Give the columns logical names oMyList.ListColumns(1).Name = "ISBN" oMyList.ListColumns(2).Name = "Title" oMyList.ListColumns(3).Name = "Author" oMyList.ListColumns(4).Name = "Quantity" End Sub
Закройте редактор Visual Basic.
Запустите код. На вкладке Разработчик нажмите кнопку Макросы, выберите макрос CreateXMLList и нажмите кнопку Выполнить. Данные XML будут импортированы в сопоставленный список, как показано на рис. 1.
Рис. 1. Список, созданный на основе данных XML и схемы XSD
Импорт данных XML в существующий сопоставленный список
В этой задаче выполняется импорт данных XML программным путем в существующий сопоставленный список.
Импорт данных в сопоставленный список
Откройте книгу с сопоставлением схемы.
Если сопоставленный список еще не создан, создайте его. На вкладке Разработчик в группе XML нажмите кнопку Источник. Должно появиться сопоставление, приведенное на рис. 2.
Рис. 2. Сопоставление BookInfo_Map
Перетащите узел BookInfo в ячейку A1. При этом будет создан пустой список.
Откройте редактор Visual Basic, нажав сочетание клавиш ALT + F11.
Вставьте общий модуль, нажав кнопку Вставка и выбрав пункт Модуль.
Вставьте через буфер обмена или введите вручную указанный ниже код.
Sub ImportXmlFromFile() ThisWorkbook.XmlMaps("BookInfo_Map").Import ("C:\BookData.xml") End Sub
Закройте редактор Visual Basic.
Запустите код. На вкладке Разработчик нажмите кнопку Макросы, выберите макрос ImportXmlFromFile и нажмите кнопку Выполнить. Данные XML будут импортированы в список, как показано на рис. 1.
Импорт данных XML без сопоставления схемы
В этой задаче выполняется импорт данных XML программным путем в список, где приложение Excel создает сопоставление по умолчанию.
Импорт данных XML без сопоставления схемы
В пустой книге откройте редактор Visual Basic, нажав сочетание клавиш ALT + F11.
Вставьте общий модуль, нажав кнопку Вставка и выбрав пункт Модуль.
Вставьте через буфер обмена или введите вручную указанный ниже код.
Sub ImportXMLtoList() Dim strTargetFile As String Application.DisplayAlerts = False strTargetFile = "C:\BookData.xml" Workbooks.OpenXML Filename:=strTargetFile, LoadOption:=xlXmlLoadImportToList Application.DisplayAlerts = True End Sub
Закройте редактор Visual Basic.
Запустите код. На вкладке Разработчик нажмите кнопку Макросы, выберите макрос ImportXMLtoList и нажмите кнопку Выполнить. Данные XML будут импортированы в список, как показано на рис. 1.