powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA. Импорт XML в Excel
8 сообщений из 8, страница 1 из 1
VBA. Импорт XML в Excel
    #37194298
srjm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Требуется 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
VBA. Импорт XML в Excel
    #37194378
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
srjmВ этом случае данные импортируются с ячейки B1, но форматирование убивается..
Добавь в книгу лист, импортируй на него (плевать на форматирование), потом перетащи данные куда надо, а лист прибей.
...
Рейтинг: 0 / 0
VBA. Импорт XML в Excel
    #37194473
srjm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

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

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

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

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

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

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

Резюме: Отбросил вариант импорта XML напрямую в XL. Распарсил XMLку на сервере, и импортировал в XL массивом.. Красивого импорта не получилось.
...
Рейтинг: 0 / 0
VBA. Импорт XML в Excel
    #37199889
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
srjmмне как раз не понятно было почему "Импорт XML" делает принудительное форматированиеПотому что кроме всего прочего это ещё и язык разметки...
...
Рейтинг: 0 / 0
VBA. Импорт XML в Excel
    #37200477
srjm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinasrjmмне как раз не понятно было почему "Импорт XML" делает принудительное форматированиеПотому что кроме всего прочего это ещё и язык разметки...
Блин, но ведь разметки структуры данных, а не экселевского шаблона.. :)
...
Рейтинг: 0 / 0
VBA. Импорт XML в Excel
    #37201982
Yudzhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA. Импорт XML в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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