|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.09.2011, 14:29 | #1 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 193
|
Нужен макрос для удаления листов из книги, в названиях которых содержится определенный текст.
Всем здравствуйте! В своей работе используем определенную программу из неё мы выгружаем документы в ексель. При выгрузке одного документа в книге ексель создается 8 листов из которых в дальнейшем мы работаем только с двумя из них, а другие удаляем. Но выгружаем мы не по одному документу, а по многу сразу (например 10), таким образом ексель создает книгу с 80 листами. Вручную удалять долго и нудно.
Мне очень помог бы в работе макрос благодаря которому можно было бы удалить листы из книги, в названиях которых содержится определенный текст. Либо удалить все листы, кроме тех которые нужно оставить (так как их меньше). Сама я пользуюсь макросом по сортировки листов в книги, после чего удалять гораздо быстрее, но все же самой вручную. Если не совсем все понятно написала, спрашивайте. Файл для примера содержит 16 листов т.е. выгружен из 2-х документов. Листы, которые нужно удалить, выделены желтым цветом. Сам текст документов на листах я удалила, чтоб файл весил мало. |
01.09.2011, 15:01 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
А как определить, какие листы нужно оставить?
Оставляем те, в названиях которых есть числа 6907 и 630 (в скобках)? |
01.09.2011, 15:10 | #3 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Код:
Анализ,обработка данных Недорого
|
01.09.2011, 15:11 | #4 |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
sub ggg()
Application.displayalerts = False for i =1 to worksheets.count if sheets(i).name like "*hhhhh" then sheets(i).delete next Application.displayalerts = true end sub
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
01.09.2011, 15:11 | #5 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 515
|
В вложении, просто в цикл (if ....... & end if)так же допишите только те листы которые не нужно удалять.
|
01.09.2011, 16:04 | #6 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 193
|
Нужно оставить листы в названиях которых содержится текст:
бух.уч.(лимиты)-МДОУ СВОД_Изменения лимитов Либо удалить листы в названиях которых содержится текст: бух.уч.(лимиты) ( Изменения ассигнований Изменения лимитов Изменения общий СВОД_Изменения ассигнова СВОД_Изменения общий |
01.09.2011, 16:52 | #7 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 193
|
R Dmitry Воспользовалась Вашим макросом - примером. Вот что у меня получилось:
Sub ggg() Application.DisplayAlerts = False For i = 1 To Worksheets.Count If Sheets(i).Name Like "*Изменения ассигнов*" Then Sheets(i).Delete If Sheets(i).Name Like "Изменения лимитов*" Then Sheets(i).Delete If Sheets(i).Name Like "*Изменения общий*" Then Sheets(i).Delete If Sheets(i).Name Like "*СВОД_Изменения ассигнов*" Then Sheets(i).Delete If Sheets(i).Name Like "*СВОД_Изменения общий*" Then Sheets(i).Delete Next Application.DisplayAlerts = True End Sub Это почти работает. Спасибо. |
01.09.2011, 17:01 | #8 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
If Sheets(i).Name Like "*СВОД_Изменения ассигнов*" Then Sheets(i).Delete
уже лишнее... Хотя по коду есть подозрение, что неправильно - после удаления листа например 3 по первому совпадению - какой лист будет проверяться на "*Изменения общий*" ? Если делать тупо так - то вводите переменную-флаг as boolean, которую взводите проверками, потом после всех проверок проверяете статус, по результату этой проверки удаляете, переменную сбрасываете. И листы удалять нужно с конца For i = Worksheets.Count To 1 step-1
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 01.09.2011 в 17:07. |
01.09.2011, 18:11 | #9 | |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
Цитата:
написал не проверив Спасибо Игорь.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
|
02.09.2011, 08:33 | #10 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 193
|
Hugo121 , R Dmitry простите, что встреваю в ваш разговор , но как правельно то все это записать в коде? For i = Worksheets.Count To 1 step-1
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос удаления пустых ячеек и листов книги | sna1 | Microsoft Office Excel | 2 | 04.05.2011 20:49 |
Размер шрифта в названиях листов | szs | Microsoft Office Excel | 0 | 24.08.2010 11:53 |
Выборка записей в поле которых содержится значение nuul | Lokos | БД в Delphi | 1 | 05.08.2010 08:23 |
поиск в названиях листов с любой ячейки | Окоча Юра | Microsoft Office Excel | 7 | 21.01.2010 00:34 |
DOS команда для удаления всех файлов, имена которых содержат цифры | Samopal | Операционные системы общие вопросы | 1 | 23.12.2008 21:12 |