Страницы: 1 2 След.
RSS
Быстропароль на листы
 
Как быстро установить/снять пароль (один и тот же) на определённое кол-во листов?    
Например на первые 100? Или на группу? Или только на листы с цифрами(числами) в названии?  
Естественно ВБА.  
 
Спасибо.
 
можно предложить использовать свойство ярлыка (цвет) для определния группы листов, которые надо запаролить.  
Например, если надо запаролить все листы, у ярлыков которых нет цветовой заливки (тут был похожий код для группового удаления листов из книги, но чей - убейте не вспомню. Так или иначе - почет и слава - автору кода) :О)  
 
Dim sh as worksheet    
For Each sh In ThisWorkbook.Worksheets  
   If sh.Tab.ColorIndex = xlColorIndexNone Then sh.Protect '(ну и вставить нужные параметры)  
Next sh  
Application.DisplayAlerts = True  
End Sub
Кому решение нужно - тот пример и рисует.
 
Одновременно на все листы пароль не поставить - такой код не работает:  
 
Sub test()  
   arr = Array(Worksheets(1).Name, Worksheets(2).Name, Worksheets(4).Name)  
   Worksheets(arr).Protect "123" ' для нескольких листов сразу не работает  
End Sub  
 
 
Так что остаётся только перебирать листы в цикле.
 
У меня и в цикле не работает. Серж поробуй, мож 2007 сработает:  
Public Sub Prot()  
   Dim sh As Worksheet  
   Dim strPassword As String, i As Integer  
   Dim a()  
   ReDim a(ThisWorkbook.Windows(1).SelectedSheets.Count - 1)  
   strPassword = InputBox("Enter the password for the worksheet")  
 
   For Each sh In ThisWorkbook.Windows(1).SelectedSheets  
       a(i) = sh.Name  
       i = i + 1  
   Next  
   For i = 0 To UBound(a)  
       Worksheets(a(i)).Protect Password:=strPassword, Scenarios:=True  
   Next  
End Sub
Я сам - дурнее всякого примера! ...
 
{quote}{login=KuklP}{date=19.08.2010 04:56}{thema=}{post}У меня и в цикле не работает. Серж поробуй, мож 2007 сработает...{/post}{/quote}Не-а..  
Только активный паролится...
 
Сергей, могу предложить такой вариант. :)
<FONT COLOR="CadetBlue">
 
{quote}{login=Дъмитръ}{date=19.08.2010 06:40}{thema=}{post}Сергей, могу предложить такой вариант. :){/post}{/quote}  
подскажите как избежать выпадения в дебаг при неверном пароле а выдать просто сообщение "низзя"
 
{quote}{login=прохож}{date=19.08.2010 06:59}{thema=Re: }{post}{quote}{login=Дъмитръ}{date=19.08.2010 06:40}{thema=}{post}Сергей, могу предложить такой вариант. :){/post}{/quote}  
подскажите как избежать выпадения в дебаг при неверном пароле а выдать просто сообщение "низзя"{/post}{/quote}  
Можно вообще без сообщений. После Дим-ов;  
On Error Resume Next  
И молча защита будет не снята. Или(и) поиграть с Application.DisplayAlerts.
Я сам - дурнее всякого примера! ...
 
{quote}{login=KuklP}{date=19.08.2010 07:28}{thema=Re: Re: }{post}{quote}{login=прохож}{date=19.08.2010 06:59}{thema=Re: }{post}{quote}{login=Дъмитръ}{date=19.08.2010 06:40}{thema=}{post}Сергей, могу предложить такой вариант. :){/post}{/quote}  
подскажите как избежать выпадения в дебаг при неверном пароле а выдать просто сообщение "низзя"{/post}{/quote}  
Можно вообще без сообщений. После Дим-ов;  
On Error Resume Next  
И молча защита будет не снята. Или(и) поиграть с Application.DisplayAlerts.{/post}{/quote}  
On Error Resume Next    
там стоит и непомогает
 
{quote}{login=Дъмитръ}{date=19.08.2010 06:40}{thema=}{post}Сергей, могу предложить такой вариант. :){/post}{/quote}Да, вариант неплохой, но недостаток прежний, необходимо вручную указывать листы...
 
Hi!Серж  
Do you want excel tools (utilities)?  
1.protect all sheets in the workbooks  
2.unprotect all sheets in the workbooks  
 
(with the same password)  
(size 628 kb)
MyExcelWorld One World One Dream!
Microsoft MVP Excel from 2012
Aydin Aliyev
 
{quote}{login=Useful}{date=20.08.2010 09:04}{thema=Re: Re: }{post}Hi!Серж  
Do you want excel tools (utilities)?  
1.protect all sheets in the workbooks  
2.unprotect all sheets in the workbooks  
 
(with the same password)  
(size 628 kb){/post}{/quote}Hi,Useful.  
Thanks, but it not that.  
I should put the password not on all sheet (with it the macro of Дъмитръ perfectly done), namely on some which are set by the user. For example the first 100. But to choose them it is necessary not manually, and simply having specified that it "the first 100 sheets".
 
Сергей, я не совсем понял Вашу задачу.  
Пожалуйста, распишите немного подробнее.
<FONT COLOR="CadetBlue">
 
{quote}{login=Дъмитръ}{date=20.08.2010 10:05}{thema=}{post}Сергей, я не совсем понял Вашу задачу.  
Пожалуйста, распишите немного подробнее.{/post}{/quote}Дъмитръ, а как можно подробнее ещё расписать?  
Могу только топик повторить:  
"Как быстро установить/снять пароль (один и тот же) на определённое кол-во листов?    
Например на первые 100? Или на группу? Или только на листы с цифрами(числами) в названии?"
 
Сергей, на первые 100 и числовые - это понятно, а что подразумевается под группой?! Это не понимаю... :(
<FONT COLOR="CadetBlue">
 
{quote}{login=Дъмитръ}{date=20.08.2010 10:16}{thema=}{post}Сергей, на первые 100 и числовые - это понятно, а что подразумевается под группой?! Это не понимаю... :({/post}{/quote}Таак...  
Получается что только я и ZVI что ли знают что такое группа?!  
В этой теме:  
http://www.planetaexcel.ru/forum.php?thread_id=18349  
я объяснял это Юрию.  
Теперь Вам (сейчас я уже лучше подготовлен :-) ): Группа - это группа листов заданных пользователем. Обычно задаётся она кликом по нужным листам при нажатой кнопке Ctrl, при этом вверху окна Excel, после названия файла появляется надпись [Группа]. При работе с такой группой изменения производимые на одном листе группы происходят и на всех остальных листах этой группы (не затрагивая не задействованные в ней листы).
Вроде понятно должно быть теперь...
 
Серж, не надо мне объяснять, что такое группа. Я знаю. В любой дискуссии сначала нужно определиться с терминами. Иначе всегда будет неразбериха.    
Что касается конкретного вопроса про пароли: с ПОСТАВЛЕННОЙ задачей макрос справится. Или нужно переформулировать вопрос. Я могу, например, дописать "ЛистБокс не предлагать" :-)
 
Серж, лови без форм:  
Public Sub Prot()  
   Dim sh As Worksheet  
   Dim strPassword As String, i As Integer  
   Dim a()  
   ReDim a(ThisWorkbook.Windows(1).SelectedSheets.Count - 1)  
   strPassword = InputBox("Enter the password for the worksheet")  
   For Each sh In ThisWorkbook.Windows(1).SelectedSheets  
       a(i) = sh.Name  
       i = i + 1  
   Next  
   For i = 0 To UBound(a)  
       Worksheets(a(i)).Select  
       Worksheets(a(i)).Protect Password:=strPassword, Scenarios:=True  
   Next  
End Sub  
 
Sub UnProt()  
   Dim sh As Worksheet  
   Dim strPassword As String, i As Integer  
   Dim a()  
   ReDim a(ThisWorkbook.Sheets.Count - 1)  
   strPassword = InputBox("Enter the password for the worksheet")  
   On Error Resume Next  
   For Each sh In ThisWorkbook.Sheets  
       a(i) = sh.Name  
       i = i + 1  
   Next  
   For i = 0 To UBound(a)  
       Worksheets(a(i)).Select  
       Worksheets(a(i)).Unprotect Password:=strPassword  
   Next  
End Sub
Я сам - дурнее всякого примера! ...
 
{quote}{login=Юрий М}{date=20.08.2010 10:57}{thema=Re: Re: }{post}Серж, не надо мне объяснять, что такое группа. Я знаю. В любой дискуссии сначала нужно определиться с терминами. Иначе всегда будет неразбериха.    
Что касается конкретного вопроса про пароли: с ПОСТАВЛЕННОЙ задачей макрос справится. Или нужно перформулировать вопрос. Я могу, например, дописать "ЛистБокс не предлагать" :-){/post}{/quote}Юрий, есть термины, которые не надо объяснять. Мы же не определяемся каждый раз с терминами "ячейка", "лист" или "мышь" :-)  
Так вот другого понятия "Группа" в Excel не существует. Можно называть группой что угодно, но понятие такое только одно. Его я и использую (не думал что с этим возникнет столько проблем...). Давайте на этом поставим точку.  
 
По теме. Как этот макрос справится с конкретно поставленной задачей?  
Например поставит пароль на первые 100 листов? Мне надо будет выбрать в списке эти листы кликнув по ним 100 раз в сумме? Да справится. Но чем тогда он отличается от ручной установки пароля? Немногим.  
С нечётными листами тоже самое, а для группы он вообще не работает.  
И зачем переформулировать абсолютно корректный вопрос?!  
Мне просто не во что его переформулировать, так как он содержит всё что необходимо.
 
{quote}{login=KuklP}{date=20.08.2010 11:18}{thema=}{post}Серж, лови без форм:  
{/post}{/quote}Да, с группой работает, спасибо!  
А как остальные условия прикрутить?
 
А на каждое остальное условие надо будет писать свой макрос(Бог его знает, что тебе в голову втемяшится) и из него вызывать этот.
Я сам - дурнее всякого примера! ...
 
{quote}{login=KuklP}{date=20.08.2010 11:33}{thema=}{post}А на каждое остальное условие надо будет писать свой макрос(Бог его знает, что тебе в голову втемяшится) и из него вызывать этот.{/post}{/quote}Блин, да я же в топике написал!  
Необходимо хотя бы три условия:    
1. Указанное кол-во листов с начала  
2. Группа (реализовано)  
3. Условие в названии
 
Вот.  
А про "группы", так разве когда в "ListBox" выбираешь листы - это не "группы"?!
<FONT COLOR="CadetBlue">
 
Дъмитръ, если выбрали каким-либо другим способом (кроме как кликом по ярлычкам), это уже "компания" листов. Ведь в Caption нет слова "Группа" :-)
 
{quote}{login=Дъмитръ}{date=20.08.2010 11:43}{thema=}{post}Вот.  
А про "группы", так разве когда в "ListBox" выбираешь листы - это не "группы"?!{/post}{/quote}Попробуйте в такой "группе" одновременно например отформатировать какую нибудь ячейку на одном листе, так что бы все изменения сразу же отобразились на всех других входящих в эту группу. Получится?  
Я-ж говорю: "Можно называть группой что угодно..." , например "группа ячеек". Но для всех это будет либо диапазоном, либо массивом, либо листом, либо...
 
Я разницы не вижу, для меня, что "Ctrl" зажать и кликать мышкой, что вызвать мою форму и выбирать листы из списка.    
Разве 2-е не удобнее?! :)
<FONT COLOR="CadetBlue">
 
{quote}{login=Юрий М}{date=20.08.2010 11:46}{thema=}{post}Дъмитръ, если выбрали каким-либо другим способом (кроме как кликом по ярлычкам), это уже "компания" листов. Ведь в Caption нет слова "Группа" :-){/post}{/quote}Юрий, зачем ёрничать?  
Не это определяет свойство группы :-) И соответственнои работу с ней.
 
Вдогонку...  
Когда я не умел создавать подобные формы, было такое, что "Ctrl" случайно отпускал и приходилось по новой, вот почему я не люблю слово "группа". ;)
<FONT COLOR="CadetBlue">
 
Сергей, Вам действительно нужно еще такое условие добавить (группы)?!  
Если "Да" - доработаю...
<FONT COLOR="CadetBlue">
 
Public Sub Prot1()  
   Dim sh As Worksheet  
   Dim strPassword As String, i As Integer  
   Dim a()  
   ReDim a(InputBox(CInt("Number of first sheets for protection?") - 1))  
   strPassword = InputBox("Enter the password for the worksheet")  
   For i = 0 To UBound(a)  
       a(i) = sh.Name  
   Next  
   For i = 0 To UBound(a)  
       Worksheets(a(i)).Select  
       Worksheets(a(i)).Protect Password:=strPassword, Scenarios:=True  
   Next  
End Sub  
 
Public Sub Prot2()  
   Dim sh As Worksheet  
   Dim strPassword As String, i As Integer, str As String  
   Dim a()  
   str = (InputBox("String for searsh in names of sheets?"))  
   strPassword = InputBox("Enter the password for the worksheet")  
   For Each sh In ThisWorkbook.Sheets  
   If InStr(1, sh.Name, str) <> 0 Then  
   ReDim Preserve a(i)  
       a(i) = sh.Name  
       i = i + 1  
   End If  
   Next  
   For i = 0 To UBound(a)  
       Worksheets(a(i)).Select  
       Worksheets(a(i)).Protect Password:=strPassword, Scenarios:=True  
   Next  
End Sub
Я сам - дурнее всякого примера! ...
Страницы: 1 2 След.
Читают тему
Наверх