Добрый день! Прошелся поиском по форуму, прочел все что нашел, но свой вопрос остался не решен. Суть: Есть множество файлов xml с данными (каждый файл - 48 строк данных за 1 сутки (1 строка - получас), всего файлов - за год - в 12 папках по 28-31 файлу в каждой папке соответственно кол-ву дней в месяце). Нужно со всех этих файлов данные собрать в 1 файл xls с 12 листами - месяцами, т.е., например на листе "январь" должны быть данные из 31 файла xml из папки "январь". Данные расположить в форме первоначальной таблицы, но за все дни месяца в одной.
В идеале хотелось бы объединить 2 строки в одну, с суммированием значений в столбце "value", т.е. сделать из получасовых данных - часовые (24 за сутки)
Добрый день! Прошелся поиском по форуму, прочел все что нашел, но свой вопрос остался не решен. Суть: Есть множество файлов xml с данными (каждый файл - 48 строк данных за 1 сутки (1 строка - получас), всего файлов - за год - в 12 папках по 28-31 файлу в каждой папке соответственно кол-ву дней в месяце). Нужно со всех этих файлов данные собрать в 1 файл xls с 12 листами - месяцами, т.е., например на листе "январь" должны быть данные из 31 файла xml из папки "январь". Данные расположить в форме первоначальной таблицы, но за все дни месяца в одной.
В идеале хотелось бы объединить 2 строки в одну, с суммированием значений в столбце "value", т.е. сделать из получасовых данных - часовые (24 за сутки)meiv
Как то так. Распакуйте архив. Положите все свои файлы в папку XML. Нажмите кнопку на 2-м листе. Макрос соберет данные на 2-й лист. Потом можно сделать сводную.
Дальше в сводной делаете нужный вам отчет.
Как то так. Распакуйте архив. Положите все свои файлы в папку XML. Нажмите кнопку на 2-м листе. Макрос соберет данные на 2-й лист. Потом можно сделать сводную.
SLAVICK Спасибо, все работает! Простите за мою лень, а можно сделать так чтобы собирал сразу за год на отдельные листочки, а не по одному месяцу? И перевести получас в час...
AndreTM файл именно тот, точнее это один из файлов с которых нужно собрать данные. Прикладываю архив с каталогами.
SLAVICK Спасибо, все работает! Простите за мою лень, а можно сделать так чтобы собирал сразу за год на отдельные листочки, а не по одному месяцу? И перевести получас в час...
AndreTM файл именно тот, точнее это один из файлов с которых нужно собрать данные. Прикладываю архив с каталогами.meiv
Можно, но зачем? У Вас все данные будут собраны на один лист - дальше можно легко добавить нужные формулы(если нужно) и сделать сводную за весь период сразу А дальше из нее делать нужные отчеты. Если данные будут на разных листах - то будет сложнее делать итоговые отчеты.
Может Вы имели ввиду сразу со всех подпапок? - можно допилить макрос, но можно просто в папку ХML скинуть сразу все файлы с всех месяцев - они же названы по разному.
Сделайте краткий пример того что-бы Вы хотели получить в итоге. А дальше будет видно.
Макрос просто собирает информацию с Ваших файлов - ничего не переделывает. Можно сделать сводную на основе полученных данных - и ее привести в тот вид, который нужно.
ЗЫ Я ответить смогу только после 5-го числа - праздники на носу
Можно, но зачем? У Вас все данные будут собраны на один лист - дальше можно легко добавить нужные формулы(если нужно) и сделать сводную за весь период сразу А дальше из нее делать нужные отчеты. Если данные будут на разных листах - то будет сложнее делать итоговые отчеты.
Может Вы имели ввиду сразу со всех подпапок? - можно допилить макрос, но можно просто в папку ХML скинуть сразу все файлы с всех месяцев - они же названы по разному.
Сделайте краткий пример того что-бы Вы хотели получить в итоге. А дальше будет видно.
Макрос просто собирает информацию с Ваших файлов - ничего не переделывает. Можно сделать сводную на основе полученных данных - и ее привести в тот вид, который нужно.
ЗЫ Я ответить смогу только после 5-го числа - праздники на носу SLAVICK
Иногда все проще чем кажется с первого взгляда.
Сообщение отредактировал SLAVICK - Четверг, 30.04.2015, 18:36
столкнулся с необходимостью свести большое к-во файлов XML в одну таблицу на одном листе (похожая на таблицу в первом посте) - они одинакового формата, с одинаковым к-вом строк и столбцов. с макросами толком не работал - прошу вашей помощи.
Добрый день!
столкнулся с необходимостью свести большое к-во файлов XML в одну таблицу на одном листе (похожая на таблицу в первом посте) - они одинакового формата, с одинаковым к-вом строк и столбцов. с макросами толком не работал - прошу вашей помощи.no_brain
вы мой пример со 2-го поста смотрели? он чудно собирает данные с ваших примеров. Все что нужно - это положить свои файлы в папку ХML, нажать кнопку и подождать пару минут...
вы мой пример со 2-го поста смотрели? он чудно собирает данные с ваших примеров. Все что нужно - это положить свои файлы в папку ХML, нажать кнопку и подождать пару минут...SLAVICK
SLAVICK, приветствую! Воспользовалась Вашим примером для сбора xml в один xls. Выдает ошибку: "Невозможно выполнить операцию, поскольку ее результат будет прерывать существующее сопоставление XML" 1004. Срока ThisWorkbook.XmlImport URL:=f, ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$1")
Подскажите, пожалуйста, в чем причина и как исправить? Пример файлов во вложении.
SLAVICK, приветствую! Воспользовалась Вашим примером для сбора xml в один xls. Выдает ошибку: "Невозможно выполнить операцию, поскольку ее результат будет прерывать существующее сопоставление XML" 1004. Срока ThisWorkbook.XmlImport URL:=f, ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$1")
Подскажите, пожалуйста, в чем причина и как исправить? Пример файлов во вложении.Annushka
поскольку ее результат будет прерывать существующее сопоставление XML" 1004.
где то я это уже слышал... есть такой момент, связано с багом Excel при разборе схемы. Решается относительно легко при помощи удаления-создания листа. См. пример - там это сделано + добавил в статусную строку статус выполнения [vba]
Код
Sub pusk() Dim r As Range, f$, n&, n1&, i%, d As Object Dim objFSO As Object Dim objFolder As Object Dim objFile As Object Dim SH As Worksheet Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(ThisWorkbook.Path & "\xml") Application.DisplayAlerts = False On Error GoTo ERRH For Each objFile In objFolder.Files f = objFile.Path Sheets(1).Delete Sheets.Add ThisWorkbook.XmlImport URL:=f, ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$1") 'удаление подключения For Each d In ActiveWorkbook.Connections d.Delete Next n = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row n1 = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1 Sheets(2).Range("a" & n1 & ":q" & n1 + n - 2).Value = Sheets(1).Range("a2:q" & n).Value i = i + 1 Application.StatusBar = i Next Application.StatusBar = False Sheets(2).Activate Application.DisplayAlerts = True Exit Sub ERRH: MsgBox "Error:" & vbLf & f End Sub
поскольку ее результат будет прерывать существующее сопоставление XML" 1004.
где то я это уже слышал... есть такой момент, связано с багом Excel при разборе схемы. Решается относительно легко при помощи удаления-создания листа. См. пример - там это сделано + добавил в статусную строку статус выполнения [vba]
Код
Sub pusk() Dim r As Range, f$, n&, n1&, i%, d As Object Dim objFSO As Object Dim objFolder As Object Dim objFile As Object Dim SH As Worksheet Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(ThisWorkbook.Path & "\xml") Application.DisplayAlerts = False On Error GoTo ERRH For Each objFile In objFolder.Files f = objFile.Path Sheets(1).Delete Sheets.Add ThisWorkbook.XmlImport URL:=f, ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$1") 'удаление подключения For Each d In ActiveWorkbook.Connections d.Delete Next n = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row n1 = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1 Sheets(2).Range("a" & n1 & ":q" & n1 + n - 2).Value = Sheets(1).Range("a2:q" & n).Value i = i + 1 Application.StatusBar = i Next Application.StatusBar = False Sheets(2).Activate Application.DisplayAlerts = True Exit Sub ERRH: MsgBox "Error:" & vbLf & f End Sub
SLAVICK, спасибо! Вроде получается, только вот как расширить диапазон столбцов в листе "Сбор" (сейчас там до Q)? А мне нужны данные из середины - c AH по AR.
SLAVICK, спасибо! Вроде получается, только вот как расширить диапазон столбцов в листе "Сбор" (сейчас там до Q)? А мне нужны данные из середины - c AH по AR.Annushka
SLAVICK, работает, но пропадает одна строка из одного файла. В первом файле 671 строк в 2м = 1 срока в 3м = 3 строки Итого должно быть 675 строк. А в своде 674
Если обрабатываю только 2 файла, то кол-во строк правильное...Не пойму в чем проблема
SLAVICK, работает, но пропадает одна строка из одного файла. В первом файле 671 строк в 2м = 1 срока в 3м = 3 строки Итого должно быть 675 строк. А в своде 674
Если обрабатываю только 2 файла, то кол-во строк правильное...Не пойму в чем проблема Annushka
Где отображается? Т.е. из файла открывается 2е строки или копируется? Возможно некорректное построение XML. Нужно смотреть файл и сравнивать его с корректным
Где отображается? Т.е. из файла открывается 2е строки или копируется? Возможно некорректное построение XML. Нужно смотреть файл и сравнивать его с корректнымSLAVICK
SLAVICK, это может быть связано с тем, что в файлах объемом 1 срока, нет шапки? Пробовала собирать только такие файлы (1 срочные), ничего не выходит - в сборе результат только по последнему файлу((( Но когда обрабатываю такие 1 срочные файлы вместе с "большими", сбор работает.
SLAVICK, это может быть связано с тем, что в файлах объемом 1 срока, нет шапки? Пробовала собирать только такие файлы (1 срочные), ничего не выходит - в сборе результат только по последнему файлу((( Но когда обрабатываю такие 1 срочные файлы вместе с "большими", сбор работает.Annushka
Где отображается? Т.е. из файла открывается 2е строки или копируется? Возможно некорректное построение XML. Нужно смотреть файл и сравнивать его с корректным
В вкладке сбор, после запуска макроса. Смотрю строки по этому файлу и их 2 шт. Когда сам файл отдельно открываю экселем, там 3 строки.
Где отображается? Т.е. из файла открывается 2е строки или копируется? Возможно некорректное построение XML. Нужно смотреть файл и сравнивать его с корректным
В вкладке сбор, после запуска макроса. Смотрю строки по этому файлу и их 2 шт. Когда сам файл отдельно открываю экселем, там 3 строки.Annushka
Это с шапкой, или без? Макрос собирает строки без шапки, е
Если у вас чередуются файлы с шапкой и без - это плохо. Обойти можно - собирая все строки, включая шапку - а потом вручную удалять строки с шапкой, или удалять дубликаты(второй вариант на всегда допустим.) чтобы собирать с шапкой меняйте строку: [vba]
Это с шапкой, или без? Макрос собирает строки без шапки, е
Если у вас чередуются файлы с шапкой и без - это плохо. Обойти можно - собирая все строки, включая шапку - а потом вручную удалять строки с шапкой, или удалять дубликаты(второй вариант на всегда допустим.) чтобы собирать с шапкой меняйте строку: [vba]