Поделиться через


Импорт данных XML в сопоставленный список в Excel 2010

Баннер быстрых заметок Office

Начало работы с возможностями расширения 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

  1. Откройте в Excel пустую книгу.

  2. Откройте редактор Visual Basic (VBE), нажав сочетание клавиш ALT + F11.

  3. Вставьте общий модуль, нажав кнопку Вставка и выбрав пункт Модуль.

  4. Вставьте через буфер обмена или введите вручную указанный ниже код.

    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
    
  5. Закройте редактор Visual Basic.

  6. Запустите код. На вкладке Разработчик нажмите кнопку Макросы, выберите макрос CreateXMLList и нажмите кнопку Выполнить. Данные XML будут импортированы в сопоставленный список, как показано на рис. 1.

    Рис. 1. Список, созданный на основе данных XML и схемы XSD

    Список, созданный на основе данных XML и схемы XSD

Импорт данных XML в существующий сопоставленный список

В этой задаче выполняется импорт данных XML программным путем в существующий сопоставленный список.

Импорт данных в сопоставленный список

  1. Откройте книгу с сопоставлением схемы.

  2. Если сопоставленный список еще не создан, создайте его. На вкладке Разработчик в группе XML нажмите кнопку Источник. Должно появиться сопоставление, приведенное на рис. 2.

    Рис. 2. Сопоставление BookInfo_Map

    Сопоставление BookInfo_Map

  3. Перетащите узел BookInfo в ячейку A1. При этом будет создан пустой список.

  4. Откройте редактор Visual Basic, нажав сочетание клавиш ALT + F11.

  5. Вставьте общий модуль, нажав кнопку Вставка и выбрав пункт Модуль.

  6. Вставьте через буфер обмена или введите вручную указанный ниже код.

    Sub ImportXmlFromFile()
         ThisWorkbook.XmlMaps("BookInfo_Map").Import ("C:\BookData.xml")
    End Sub
    
  7. Закройте редактор Visual Basic.

  8. Запустите код. На вкладке Разработчик нажмите кнопку Макросы, выберите макрос ImportXmlFromFile и нажмите кнопку Выполнить. Данные XML будут импортированы в список, как показано на рис. 1.

Импорт данных XML без сопоставления схемы

В этой задаче выполняется импорт данных XML программным путем в список, где приложение Excel создает сопоставление по умолчанию.

Импорт данных XML без сопоставления схемы

  1. В пустой книге откройте редактор Visual Basic, нажав сочетание клавиш ALT + F11.

  2. Вставьте общий модуль, нажав кнопку Вставка и выбрав пункт Модуль.

  3. Вставьте через буфер обмена или введите вручную указанный ниже код.

    Sub ImportXMLtoList()
         Dim strTargetFile As String
         Application.DisplayAlerts = False
         strTargetFile = "C:\BookData.xml"
         Workbooks.OpenXML Filename:=strTargetFile, LoadOption:=xlXmlLoadImportToList
         Application.DisplayAlerts = True
    End Sub
    
  4. Закройте редактор Visual Basic.

  5. Запустите код. На вкладке Разработчик нажмите кнопку Макросы, выберите макрос ImportXMLtoList и нажмите кнопку Выполнить. Данные XML будут импортированы в список, как показано на рис. 1.

Дальнейшие действия