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

Вход

Регистрация

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

 

= Мир MS Excel/Снятие защиты всех листов (оптимизация) - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Снятие защиты всех листов (оптимизация) (Макросы/Sub)
Снятие защиты всех листов (оптимизация)
Anis625 Дата: Воскресенье, 10.03.2019, 22:41 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 265
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Добрый вечер, участникам форума!

Сегодня удалось решить еще одну текущую задачку собрав в просторах интернета готовые решения и адаптировав их под себя.

Два макроса:
один - ставит защиту на все листы, скрывает один лист, ставит защиту структуры книги;
второй - в обратном порядке

Все работает отлично. Только после добавления кода на снятие пароля со всех листов:
[vba]
Код
Dim wSheet As Worksheet
    For Each wSheet In Worksheets
        If wSheet.ProtectContents = True Then
            wSheet.Unprotect Password:=0
        End If
    Next wSheet
[/vba]

начинает перебирать все листы (их 6) все моргает пару секунд, но выполняет свое дело.

Есть ли вариант оптимизации этой части?
К сообщению приложен файл: __.xlsb(20.9 Kb)


Сообщение отредактировал Anis625 - Воскресенье, 10.03.2019, 22:42
 
Ответить
СообщениеДобрый вечер, участникам форума!

Сегодня удалось решить еще одну текущую задачку собрав в просторах интернета готовые решения и адаптировав их под себя.

Два макроса:
один - ставит защиту на все листы, скрывает один лист, ставит защиту структуры книги;
второй - в обратном порядке

Все работает отлично. Только после добавления кода на снятие пароля со всех листов:
[vba]
Код
Dim wSheet As Worksheet
    For Each wSheet In Worksheets
        If wSheet.ProtectContents = True Then
            wSheet.Unprotect Password:=0
        End If
    Next wSheet
[/vba]

начинает перебирать все листы (их 6) все моргает пару секунд, но выполняет свое дело.

Есть ли вариант оптимизации этой части?

Автор - Anis625
Дата добавления - 10.03.2019 в 22:41
Pelena Дата: Понедельник, 11.03.2019, 08:21 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 14010
Репутация: 3066 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Здравствуйте.
Можно попробовать в начале макроса отключить обновление экрана
[vba]
Код
Application.ScreenUpdating=False
[/vba]
а в конце включить
[vba]
Код
Application.ScreenUpdating=True
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Можно попробовать в начале макроса отключить обновление экрана
[vba]
Код
Application.ScreenUpdating=False
[/vba]
а в конце включить
[vba]
Код
Application.ScreenUpdating=True
[/vba]

Автор - Pelena
Дата добавления - 11.03.2019 в 08:21
Anis625 Дата: Понедельник, 11.03.2019, 09:08 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 265
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Pelena,

Отлично теперь работает. Спасибо Вам за подсказку =) Теперь все без ряби работает и быстро отрабатывает макрос.
 
Ответить
СообщениеPelena,

Отлично теперь работает. Спасибо Вам за подсказку =) Теперь все без ряби работает и быстро отрабатывает макрос.

Автор - Anis625
Дата добавления - 11.03.2019 в 09:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Снятие защиты всех листов (оптимизация) (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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