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

Вход

Регистрация

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

 

= Мир MS Excel/Создание отдельных листов из общей базы данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание отдельных листов из общей базы данных (Макросы Sub)
Создание отдельных листов из общей базы данных
sos-13 Дата: Воскресенье, 01.12.2013, 12:52 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Для начала ещё раз благодарю за помощь. В продолжении законченной темы хочу дополнить, что разобрался с размером файла. Причина большого объема является следующая проблема: если один отдел подразделяется на подотделы, например, "отдел кадров" делиться на "Учет работников", "учет личных дел", "учет карточек", "еще учет", и после "Отдела кадров" идут другие отделы, то копирование происходит полностью всей таблицы до конца списка. При выполнении макроса это видно.
Прошу оказать помощь в данной проблемке. Заранее спасибо.
файл прилагаю, сразу скажу, что макрос не выполнял, потому что размер файла сразу становиться 25 Мб.
К сообщению приложен файл: 0758877.xlsm (65.1 Kb)


Сообщение отредактировал sos-13 - Воскресенье, 01.12.2013, 13:02
 
Ответить
СообщениеДля начала ещё раз благодарю за помощь. В продолжении законченной темы хочу дополнить, что разобрался с размером файла. Причина большого объема является следующая проблема: если один отдел подразделяется на подотделы, например, "отдел кадров" делиться на "Учет работников", "учет личных дел", "учет карточек", "еще учет", и после "Отдела кадров" идут другие отделы, то копирование происходит полностью всей таблицы до конца списка. При выполнении макроса это видно.
Прошу оказать помощь в данной проблемке. Заранее спасибо.
файл прилагаю, сразу скажу, что макрос не выполнял, потому что размер файла сразу становиться 25 Мб.

Автор - sos-13
Дата добавления - 01.12.2013 в 12:52
sos-13 Дата: Воскресенье, 01.12.2013, 13:03 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Извиняюсь, исправил


Сообщение отредактировал sos-13 - Воскресенье, 01.12.2013, 13:09
 
Ответить
СообщениеИзвиняюсь, исправил

Автор - sos-13
Дата добавления - 01.12.2013 в 13:03
nilem Дата: Воскресенье, 01.12.2013, 15:05 | Сообщение № 3
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
вот так попробуйте:
[vba]
Код
Sub ertert()
Dim r As Range, i&, hdr As Range, s$, lr&: Application.ScreenUpdating = False
With Sheets("дела")
     lr = .Cells(Rows.Count, 2).End(xlUp).Row
     Set r = .Range("B1"): Set hdr = .Range("A9:F10")
     For i = 11 To lr
         Do While .Cells(i, 1).MergeCells = False And i < lr
             Set r = Union(r, .Cells(i, 1)): i = i + 1
         Loop
         If r.Count > 1 Then
             With Intersect(.Columns(1), r).Resize(, 6)
                 With .Offset(-1).Resize(.Rows.Count + 1)
                     Sheets.Add after:=Sheets(Sheets.Count)
                     hdr.Copy
                     Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
                     Range("A1").PasteSpecial Paste:=xlPasteAll
                     .Copy Range("A3")
                 End With
             End With
             Set r = .Range("B1")
         End If
     Next i
End With
With Application
     .ScreenUpdating = True: .CutCopyMode = False
End With
End Sub
[/vba]
в файле внизу объединенные ячейки убрал
К сообщению приложен файл: _0758877.xlsm (43.0 Kb)


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениевот так попробуйте:
[vba]
Код
Sub ertert()
Dim r As Range, i&, hdr As Range, s$, lr&: Application.ScreenUpdating = False
With Sheets("дела")
     lr = .Cells(Rows.Count, 2).End(xlUp).Row
     Set r = .Range("B1"): Set hdr = .Range("A9:F10")
     For i = 11 To lr
         Do While .Cells(i, 1).MergeCells = False And i < lr
             Set r = Union(r, .Cells(i, 1)): i = i + 1
         Loop
         If r.Count > 1 Then
             With Intersect(.Columns(1), r).Resize(, 6)
                 With .Offset(-1).Resize(.Rows.Count + 1)
                     Sheets.Add after:=Sheets(Sheets.Count)
                     hdr.Copy
                     Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
                     Range("A1").PasteSpecial Paste:=xlPasteAll
                     .Copy Range("A3")
                 End With
             End With
             Set r = .Range("B1")
         End If
     Next i
End With
With Application
     .ScreenUpdating = True: .CutCopyMode = False
End With
End Sub
[/vba]
в файле внизу объединенные ячейки убрал

Автор - nilem
Дата добавления - 01.12.2013 в 15:05
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание отдельных листов из общей базы данных (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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