Есть табеля работы персонала по разным магазинам. Мне нужно сделать общий табель в который добавятся данные по каждому продавцу из каждого файла. Грубо говоря перенос данных построчно. Необходимо переносить данные только тех строк где есть ИНН. (ФИО, ИНН, раб дни, итого з/и т.д.)
- название файлов может меняться. - количество файлов может меняться. - все лежат всегда в одной папке. Прилагаю файлы и в файле "Итоговая" сделал пример Лист 1 - пустой график, Лист 2 - заполненный.
Пробовал через ИНДЕКС + ПОИСКПОЗ понял что будут очень большие формулы да и названия должны быть одинаковые. Видимо выход макрос а я в нем не силён.
Заранее благодарю. Эксель 2007 Решение - макрос.
Добрый день форумчане!
Суть вопроса.
Есть табеля работы персонала по разным магазинам. Мне нужно сделать общий табель в который добавятся данные по каждому продавцу из каждого файла. Грубо говоря перенос данных построчно. Необходимо переносить данные только тех строк где есть ИНН. (ФИО, ИНН, раб дни, итого з/и т.д.)
- название файлов может меняться. - количество файлов может меняться. - все лежат всегда в одной папке. Прилагаю файлы и в файле "Итоговая" сделал пример Лист 1 - пустой график, Лист 2 - заполненный.
Пробовал через ИНДЕКС + ПОИСКПОЗ понял что будут очень большие формулы да и названия должны быть одинаковые. Видимо выход макрос а я в нем не силён.
Заранее благодарю. Эксель 2007 Решение - макрос.Logist
С Workbooks(2).Close False я бы не спешил - у меня например их всегда открыто 4. Лучше так: [vba]
Код
Dim wb As Workbook '... Set wb = Workbooks.Open(sPath & sXLS) 'Тут процедура копирования. Еще нужно подумать, но мне пока некогда. Можно поискать готовое решение wb.Close False
[/vba]
С Workbooks(2).Close False я бы не спешил - у меня например их всегда открыто 4. Лучше так: [vba]
Код
Dim wb As Workbook '... Set wb = Workbooks.Open(sPath & sXLS) 'Тут процедура копирования. Еще нужно подумать, но мне пока некогда. Можно поискать готовое решение wb.Close False
Здесь нашел макрос который собирает данные из выбранных Книг в один файл, но копирует все данные файла. [vba]
Код
Sub Собираем_диапазоны_выбранных_книг_и_всех_листов()
Dim iRng As Range Dim iRngAddress As String, oAwb As String, oFile Dim lLastRow As Long, lLastRowMyBook As Long Dim iLastColumn As Integer Dim Str() As String
With Application.FileDialog(msoFileDialogFilePicker) .AllowMultiSelect = True .InitialFileName = "*.*" .Title = "Выберите файлы" If .Show = False Then Exit Sub For Each oFile In .SelectedItems Workbooks.OpenText fileName:=oFile oAwb = Dir(oFile, vbDirectory)
и вроде вот оно решение осталось только применить сортировку и удалить лишние строки по колонке с ИНН, но беда в том (как я понял) что есть объединенные ячейки и сортировка не может быть выполнена. Файл результат описанного макроса прилагаю.
Можно ли подправить макрос что б он сортировал таблицу к виду как в первом сообщении "в файле "Итоговая" сделал пример Лист 1 - пустой график, Лист 2 - заполненный."? Или назначить второй макрос который будет сортировать результат данного макроса?
Заранее спасибо.
Здесь нашел макрос который собирает данные из выбранных Книг в один файл, но копирует все данные файла. [vba]
Код
Sub Собираем_диапазоны_выбранных_книг_и_всех_листов()
Dim iRng As Range Dim iRngAddress As String, oAwb As String, oFile Dim lLastRow As Long, lLastRowMyBook As Long Dim iLastColumn As Integer Dim Str() As String
With Application.FileDialog(msoFileDialogFilePicker) .AllowMultiSelect = True .InitialFileName = "*.*" .Title = "Выберите файлы" If .Show = False Then Exit Sub For Each oFile In .SelectedItems Workbooks.OpenText fileName:=oFile oAwb = Dir(oFile, vbDirectory)
и вроде вот оно решение осталось только применить сортировку и удалить лишние строки по колонке с ИНН, но беда в том (как я понял) что есть объединенные ячейки и сортировка не может быть выполнена. Файл результат описанного макроса прилагаю.
Можно ли подправить макрос что б он сортировал таблицу к виду как в первом сообщении "в файле "Итоговая" сделал пример Лист 1 - пустой график, Лист 2 - заполненный."? Или назначить второй макрос который будет сортировать результат данного макроса?
Есть много книг, расположенных по одной в папке. Путь к книгам имеет структуру: disk:\...\GOD\KVARTAL\DDMMYY где GOD ={2000...2013} KVARTAL={I_KV, II_KV, III_KV, IV_KV} DDMMYY без коментариев понятно что значит. В каждой папке имя книги разное, зависит от дня и месяца. В некоторых папках книги отсутствуют. Нужно обойти все папки, начиная с начальной даты и по конечную, и что-то сделать с книгами. Поскольку все пути к книге можно перебрать в тройном вложенном цикле и имя файла также рассчитать по обрабатываемой дате, перебрать все книги - не проблема. А как пропустить те дни, где книги нет?
Есть много книг, расположенных по одной в папке. Путь к книгам имеет структуру: disk:\...\GOD\KVARTAL\DDMMYY где GOD ={2000...2013} KVARTAL={I_KV, II_KV, III_KV, IV_KV} DDMMYY без коментариев понятно что значит. В каждой папке имя книги разное, зависит от дня и месяца. В некоторых папках книги отсутствуют. Нужно обойти все папки, начиная с начальной даты и по конечную, и что-то сделать с книгами. Поскольку все пути к книге можно перебрать в тройном вложенном цикле и имя файла также рассчитать по обрабатываемой дате, перебрать все книги - не проблема. А как пропустить те дни, где книги нет?SergeyKorotun
Почитал за On Error Resume Next. Больше подойдет On Error GoTo Но все книги находятся на сетевом диске и если он будет недоступен, никто и не узнает, что макрос ничего не обработал. Тогда предварительно нужно проверить, существует ли disk:\...\GOD\KVARTAL\DDMMYY Как?
Нашел: if dir( "Определённая папка\1.xls") <>"" then msgbox "Файл 1.xls существует" Или: If Dir("filename") <> vbNullString Then MsgBox "Файл существует" End If
Почитал за On Error Resume Next. Больше подойдет On Error GoTo Но все книги находятся на сетевом диске и если он будет недоступен, никто и не узнает, что макрос ничего не обработал. Тогда предварительно нужно проверить, существует ли disk:\...\GOD\KVARTAL\DDMMYY Как?
Нашел: if dir( "Определённая папка\1.xls") <>"" then msgbox "Файл 1.xls существует" Или: If Dir("filename") <> vbNullString Then MsgBox "Файл существует" End IfSergeyKorotun
Сообщение отредактировал SergeyKorotun - Четверг, 08.08.2013, 00:42
Создайте несколько книг (не все) и запустите [vba]
Код
Sub qq() On Error Resume Next For i = 1 To 6 Set wb = Workbooks.Open("D:\" & i & ".xlsx") If Err Then strk = strk & " " & i End If wb.Close Err.Clear Next MsgBox (strk) End Sub
[/vba]
Создайте несколько книг (не все) и запустите [vba]
Код
Sub qq() On Error Resume Next For i = 1 To 6 Set wb = Workbooks.Open("D:\" & i & ".xlsx") If Err Then strk = strk & " " & i End If wb.Close Err.Clear Next MsgBox (strk) End Sub