Подскажите макрос на защиту листа и книги. У меня в файле много вкладок, которые я собираюсь скрыть, оставив только один рабочий лист1, на котором также будут расставлены правила блокировки ячеек. Нужно чтобы при открытии файла, автоматически включалась защита листа1 и книги целиком, чтобы остальные листы нельзя было отобразить. Было бы круто закрыть доступ к диспетчеру имен еще (только так, чтоб он продолжал работать и была возможность получить доступ к нему разблокировав книгу)
P.S. У меня там для достоверности эксперимента вставлен макрос препятствующий сохранению книги. Мне это нужно в рабочем проекте. [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Saved = True End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Cancel = True End Sub
[/vba]
Подскажите макрос на защиту листа и книги. У меня в файле много вкладок, которые я собираюсь скрыть, оставив только один рабочий лист1, на котором также будут расставлены правила блокировки ячеек. Нужно чтобы при открытии файла, автоматически включалась защита листа1 и книги целиком, чтобы остальные листы нельзя было отобразить. Было бы круто закрыть доступ к диспетчеру имен еще (только так, чтоб он продолжал работать и была возможность получить доступ к нему разблокировав книгу)
P.S. У меня там для достоверности эксперимента вставлен макрос препятствующий сохранению книги. Мне это нужно в рабочем проекте. [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Saved = True End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Cancel = True End Sub
Так нужно? Про достоверность Вы уже после добавили, поэтому сами там с ней разбирайтесь уже. В модуль КНИГИ [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) SkrImen SkrListy End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) SkrImen SkrListy End Sub
Private Sub Workbook_Open() SkrImen SkrListy End Sub
Sub SkrListy() shVidim.Visible = -1 shVidim.Protect Password:="ssaP", UserInterfaceOnly:=True For Each sh_ In Me.Worksheets jjj = sh_.CodeName If sh_.CodeName <> "shVidim" Then sh_.Visible = 2 End If Next sh_ End Sub
Sub SkrImen() For Each n_ In Me.Names n_.Visible = False Next n_ End Sub
[/vba] Файл перевложил
Так нужно? Про достоверность Вы уже после добавили, поэтому сами там с ней разбирайтесь уже. В модуль КНИГИ [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) SkrImen SkrListy End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) SkrImen SkrListy End Sub
Private Sub Workbook_Open() SkrImen SkrListy End Sub
Sub SkrListy() shVidim.Visible = -1 shVidim.Protect Password:="ssaP", UserInterfaceOnly:=True For Each sh_ In Me.Worksheets jjj = sh_.CodeName If sh_.CodeName <> "shVidim" Then sh_.Visible = 2 End If Next sh_ End Sub
Sub SkrImen() For Each n_ In Me.Names n_.Visible = False Next n_ End Sub
_Boroda_, только проблем один у меня все же есть. [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Saved = True End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Cancel = True End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) SkrImen SkrListy End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) SkrImen SkrListy End Sub
[/vba]
Помогите скрестить эти макросы вместе.
_Boroda_, только проблем один у меня все же есть. [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Saved = True End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Cancel = True End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) SkrImen SkrListy End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) SkrImen SkrListy End Sub
Ага, нашли Мичурина [offtop]Как умер Мичурин? Полез на яблоню за укропом, а его арбузами завалило[/offtop]
Если б я понял, зачем Вы это делаете, то я бы с самого начала их скрестил. Если запрещено сохранять и закрываем без сохранения, то свои оставьте, а мои сотрите Или можно при попытке сохранить-закрыть все равно всё блокировать, а потом не сохранять и не закрывать. Вот такое западло [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) SkrImen SkrListy ThisWorkbook.Saved = True End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) SkrImen SkrListy Cancel = True End Sub
Ага, нашли Мичурина [offtop]Как умер Мичурин? Полез на яблоню за укропом, а его арбузами завалило[/offtop]
Если б я понял, зачем Вы это делаете, то я бы с самого начала их скрестил. Если запрещено сохранять и закрываем без сохранения, то свои оставьте, а мои сотрите Или можно при попытке сохранить-закрыть все равно всё блокировать, а потом не сохранять и не закрывать. Вот такое западло [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean) SkrImen SkrListy ThisWorkbook.Saved = True End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) SkrImen SkrListy Cancel = True End Sub
_Boroda_, У меня в моем файле есть кнопка "выполнить расчет" которая закрывает файл без сохранения и открывает по новой. Таким образом можно выполнять новый расчет не выполняя нудную процедуру возврата всего в начальную позицию вручную.
А если кто-то жмякнет во время работы на кнопку сохранить или закроет с сохранением, то при последующей загрузке файла, нажав на кнопку выполнить новый расчет, восстановится тот файл, который сохранил пользователь. Вот такой мотив :-)
Единственное что, пр таком раскладе и правда нет необходимости ничего прятать при закрытии.
_Boroda_, У меня в моем файле есть кнопка "выполнить расчет" которая закрывает файл без сохранения и открывает по новой. Таким образом можно выполнять новый расчет не выполняя нудную процедуру возврата всего в начальную позицию вручную.
А если кто-то жмякнет во время работы на кнопку сохранить или закроет с сохранением, то при последующей загрузке файла, нажав на кнопку выполнить новый расчет, восстановится тот файл, который сохранил пользователь. Вот такой мотив :-)
Единственное что, пр таком раскладе и правда нет необходимости ничего прятать при закрытии.heaven33rus