Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Разделить лист на книги - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разделить лист на книги (Макросы Sub)
Разделить лист на книги
DJ_Marker_MC Дата: Пятница, 21.02.2014, 00:25 | Сообщение № 1
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Добрый вечер коллеги, помогите пожалуйста с макросом разделения листа на книги.
Признаюсь честно, видел темы похожие, но кругом какие то, так сказать, слегка корявенькие макросы.
Я пытался писать через занесения первого столбца уникальных значений в массив, а потом поочередно делать по каждому элементу массива фильтр по столбцу А, потом копировать весь диапазон отфильтрованный на новый лист и перемещать лист в новую книгу (файл с наработкой оставил на работе), но всё равно мне как то не очень нравится такой вариант, можете помочь на простом примере?
К сообщению приложен файл: 1597843.xlsm (9.4 Kb)
 
Ответить
СообщениеДобрый вечер коллеги, помогите пожалуйста с макросом разделения листа на книги.
Признаюсь честно, видел темы похожие, но кругом какие то, так сказать, слегка корявенькие макросы.
Я пытался писать через занесения первого столбца уникальных значений в массив, а потом поочередно делать по каждому элементу массива фильтр по столбцу А, потом копировать весь диапазон отфильтрованный на новый лист и перемещать лист в новую книгу (файл с наработкой оставил на работе), но всё равно мне как то не очень нравится такой вариант, можете помочь на простом примере?

Автор - DJ_Marker_MC
Дата добавления - 21.02.2014 в 00:25
anvg Дата: Пятница, 21.02.2014, 03:24 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток.
Как вариант через ADO.
К сообщению приложен файл: 1301905.xlsm (16.8 Kb)


Сообщение отредактировал anvg - Пятница, 21.02.2014, 03:25
 
Ответить
СообщениеДоброе время суток.
Как вариант через ADO.

Автор - anvg
Дата добавления - 21.02.2014 в 03:24
DJ_Marker_MC Дата: Пятница, 21.02.2014, 12:11 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
anvg, Спасибо большое, оно конечно работает (и работает хорошо), но так как я с АДО не работал никогда, то честно сказать немного трудно разобраться и понять каким образом происходить отбор значения например. При пошаговом выполнении понял что за это у вас отвечает currentSet и внутри него есть параметр Source, но я так и не понял как его можно вытащить для того чтоб при сохранении книги давать ей имя отобранного в данный момент значения? кроме как давать имя книги при сохранении взяв для этого значение с ячейки А2 ничего не придумал (но это костыль).

И всё таки хочу попросить у Вас, друзья, решение без использования ADO (для души роднее, а с ADO посижу почитаю в свободное время на этом примере что к чему)
 
Ответить
Сообщениеanvg, Спасибо большое, оно конечно работает (и работает хорошо), но так как я с АДО не работал никогда, то честно сказать немного трудно разобраться и понять каким образом происходить отбор значения например. При пошаговом выполнении понял что за это у вас отвечает currentSet и внутри него есть параметр Source, но я так и не понял как его можно вытащить для того чтоб при сохранении книги давать ей имя отобранного в данный момент значения? кроме как давать имя книги при сохранении взяв для этого значение с ячейки А2 ничего не придумал (но это костыль).

И всё таки хочу попросить у Вас, друзья, решение без использования ADO (для души роднее, а с ADO посижу почитаю в свободное время на этом примере что к чему)

Автор - DJ_Marker_MC
Дата добавления - 21.02.2014 в 12:11
KuklP Дата: Пятница, 21.02.2014, 17:32 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
[vba]
Код
Public Sub www()
     Dim i&, a
     a = [a1].CurrentRegion
     With CreateObject("scripting.dictionary")
         For i = 2 To UBound(a): .Item(a(i, 1)) = "": Next
         a = .keys
     End With
     For i = 0 To UBound(a)
         Sheets(1).Copy
         With ActiveSheet.[a1].CurrentRegion
             .AutoFilter 1, "<>" & a(i)
             .Offset(1).SpecialCells(12).EntireRow.Delete
             With .Parent
                 .AutoFilterMode = 0: .Name = a(i)
                 .Parent.SaveAs ThisWorkbook.Path & "\" & a(i) & ".xlsx", 51
                 .Parent.Close
             End With
         End With
     Next
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение[vba]
Код
Public Sub www()
     Dim i&, a
     a = [a1].CurrentRegion
     With CreateObject("scripting.dictionary")
         For i = 2 To UBound(a): .Item(a(i, 1)) = "": Next
         a = .keys
     End With
     For i = 0 To UBound(a)
         Sheets(1).Copy
         With ActiveSheet.[a1].CurrentRegion
             .AutoFilter 1, "<>" & a(i)
             .Offset(1).SpecialCells(12).EntireRow.Delete
             With .Parent
                 .AutoFilterMode = 0: .Name = a(i)
                 .Parent.SaveAs ThisWorkbook.Path & "\" & a(i) & ".xlsx", 51
                 .Parent.Close
             End With
         End With
     Next
End Sub
[/vba]

Автор - KuklP
Дата добавления - 21.02.2014 в 17:32
DJ_Marker_MC Дата: Пятница, 21.02.2014, 17:48 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
KuklP, Коротко и ясно))) Большое спасибо. Уже не впервые выручаете. hands
На самом деле макрос является полезным думаю многим и удивляюсь почему его как таково нигде нет до сих пор в копилках наработанных ценностей. Вижу смысл универсализировать, добавить еще две переменных Inbox с указанием столбца идентификатора и строка шапки. Но с этим не проблема.

На живом примере отработал отлично... Благодарю!
 
Ответить
СообщениеKuklP, Коротко и ясно))) Большое спасибо. Уже не впервые выручаете. hands
На самом деле макрос является полезным думаю многим и удивляюсь почему его как таково нигде нет до сих пор в копилках наработанных ценностей. Вижу смысл универсализировать, добавить еще две переменных Inbox с указанием столбца идентификатора и строка шапки. Но с этим не проблема.

На живом примере отработал отлично... Благодарю!

Автор - DJ_Marker_MC
Дата добавления - 21.02.2014 в 17:48
DJ_Marker_MC Дата: Пятница, 21.02.2014, 20:03 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Ребята, а что это за глюк такой и как от него избавится???
После отработки данного макроса, книги закрываются, но висят в памяти редактора VBA до выхода из ексель.
замена .parent.close на ActiveWorkbook.Close перед Next от глюка не избавило.
К сообщению приложен файл: 5885791.gif (37.9 Kb)
 
Ответить
СообщениеРебята, а что это за глюк такой и как от него избавится???
После отработки данного макроса, книги закрываются, но висят в памяти редактора VBA до выхода из ексель.
замена .parent.close на ActiveWorkbook.Close перед Next от глюка не избавило.

Автор - DJ_Marker_MC
Дата добавления - 21.02.2014 в 20:03
KuklP Дата: Пятница, 21.02.2014, 20:35 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Это у Вас реально глюк. :D
У меня такого нет. Все книги корректно закрываются и выгружаются из памяти. Попробуйте пощелкать по модулям тех книг, что будет?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЭто у Вас реально глюк. :D
У меня такого нет. Все книги корректно закрываются и выгружаются из памяти. Попробуйте пощелкать по модулям тех книг, что будет?

Автор - KuklP
Дата добавления - 21.02.2014 в 20:35
DJ_Marker_MC Дата: Пятница, 21.02.2014, 20:47 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
KuklP, Модулей нет, есть только один объект Лист1, даже ЭтаКнига нет, но когда открываешь просто уже сохранённый файл, то там всё ок.
Попробую в понедельник еще на рабочей машине, хотя домашнюю еще не перезагружал))))
Кстати, я эту тему вынес в готовые решения с небольшими коррективами от себя http://www.excelworld.ru/forum/3-9187-1
 
Ответить
СообщениеKuklP, Модулей нет, есть только один объект Лист1, даже ЭтаКнига нет, но когда открываешь просто уже сохранённый файл, то там всё ок.
Попробую в понедельник еще на рабочей машине, хотя домашнюю еще не перезагружал))))
Кстати, я эту тему вынес в готовые решения с небольшими коррективами от себя http://www.excelworld.ru/forum/3-9187-1

Автор - DJ_Marker_MC
Дата добавления - 21.02.2014 в 20:47
nilem Дата: Пятница, 21.02.2014, 23:32 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
DJ_Marker_MC,
еще вот здесь можно посмотреть (в файле-примере есть вариант сохранения в отдельные файлы)


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеDJ_Marker_MC,
еще вот здесь можно посмотреть (в файле-примере есть вариант сохранения в отдельные файлы)

Автор - nilem
Дата добавления - 21.02.2014 в 23:32
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разделить лист на книги (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!