Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA. Импорт XML в Excel / 8 сообщений из 8, страница 1 из 1
01.04.2011, 13:58
    #37194298
srjm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA. Импорт XML в Excel
Требуется VBA-макросом сымпортировать XML-данные на страницу Excel, при этом не порушив форматирование этой страницы.

Пробовал двумя вариантами:
1..
Код: plaintext
1.
ActiveWorkbook.XmlImport("C:\Test\test.xml", Nothing, True, Range("B1"))
В этом случае данные импортируются с ячейки B1, но форматирование убивается..

2.. С предварительным созданием XML-карты. Работает только если после программного создания XML-карты
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ActiveWorkbook.XmlMaps.Add( _
        "C:\Test\test.xml", "root").Name = _
        "root_карта"
    
	With ActiveWorkbook.XmlMaps("root_карта")
        .ShowImportExportValidationErrors = False
        .DataBinding.ClearSettings
        .AdjustColumnWidth = False
        .PreserveColumnFilter = False
        .PreserveNumberFormatting = False
        .AppendOnImport = False
    End With

сделать ручками сопоставление элементов, после чего вызвать
Код: plaintext
1.
2.
	
    ActiveWorkbook.XmlMaps("root_карта").DataBinding.Refresh

Может знаете как выполнить сопоставление из VBA?
Или может есть другие способы импорта XML с сохранинием форматирования?
...
Рейтинг: 0 / 0
01.04.2011, 14:30
    #37194378
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA. Импорт XML в Excel
srjmВ этом случае данные импортируются с ячейки B1, но форматирование убивается..
Добавь в книгу лист, импортируй на него (плевать на форматирование), потом перетащи данные куда надо, а лист прибей.
...
Рейтинг: 0 / 0
01.04.2011, 15:09
    #37194473
srjm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA. Импорт XML в Excel
Akina,

можно... но это уже танцы с бубном..
...
Рейтинг: 0 / 0
01.04.2011, 18:25
    #37194975
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA. Импорт XML в Excel
Это НЕ танцы с бубном.
Есть процедура "импорт XML в Эксель".
Есть процедура "форматирование ячеек".
Процедуры, делающей и то, и другое одновременно - нет. Потому ты будешь делать её руками.
Я привёл один из массы возможных вариантов. Если на время выполнения запретить обновление окна приложения - должно работать быстро и хорошо, тем более что перенос данных с листа на лист можно делать одной макрокомандой.
...
Рейтинг: 0 / 0
05.04.2011, 10:15
    #37199535
srjm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA. Импорт XML в Excel
Akina,

В любом случае спасибо за ответ!

Предложенный Вами вариант я рассматривал и ранее, но он мне не понравился тем, что приходится создавать отдельный лист, и заниматься копипастом.
Когда речь идет о большом количестве подгружаемых данных, то такое дополнительное действие становится дорогостоящим.

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

По поводу различных процедур импорта и форматирования, мне как раз не понятно было почему "Импорт XML" делает принудительное форматирование, в то время, когда мне этого не нужно!

В моем 2м варианте не хватало блока создания списка и привязки к нему XML-карты. Но это делается только через XPath. А не всегда известно какая структура загружается..

Резюме: Отбросил вариант импорта XML напрямую в XL. Распарсил XMLку на сервере, и импортировал в XL массивом.. Красивого импорта не получилось.
...
Рейтинг: 0 / 0
05.04.2011, 12:21
    #37199889
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA. Импорт XML в Excel
srjmмне как раз не понятно было почему "Импорт XML" делает принудительное форматированиеПотому что кроме всего прочего это ещё и язык разметки...
...
Рейтинг: 0 / 0
05.04.2011, 15:10
    #37200477
srjm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA. Импорт XML в Excel
Akinasrjmмне как раз не понятно было почему "Импорт XML" делает принудительное форматированиеПотому что кроме всего прочего это ещё и язык разметки...
Блин, но ведь разметки структуры данных, а не экселевского шаблона.. :)
...
Рейтинг: 0 / 0
06.04.2011, 11:56
    #37201982
Yudzhin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA. Импорт XML в Excel
srjm,

Tools -> References -> Microsoft XML, vN.N (N.N - цифры).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub FindNode()

   Dim xmlDoc As DOMDocument
   Dim xmlNode As IXMLDOMNode
   Dim xmlNodes As IXMLDOMNodeList

   ' Загружаем.
   Set xmlDoc = New DOMDocument
   xmlDoc.async = False
   xmlDoc.Load (ThisWorkbook.Path & "\Продажи.xml")

   ' Находим работников по заданному критерию.
   Set xmlNodes = xmlDoc.SelectNodes("//Сотрудник[Выручка>1000]")

   ' Проверяем каждый найденный элемент.
   For Each xmlNode In xmlNodes
      Debug.Print xmlNode.Text
   Next

End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA. Импорт XML в Excel / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]