В приложении форма заказа, составленная с помощью Alex_ST, за что ему огромное спасибо. Но теперь эту форму нужно отправить клиенту, чтобы он сам мог ее предварительно заполнить и отправить нам уже готовый заказ. При этом хотелось бы обезопасить файл от намеренных либо случайных нежелательных изменений. Но когда я защищаю лист, при выборе "Обработки торцов" выходит ошибка. Что я делаю не так? Как правильно защитить лист, чтобы макрос работал?
Пароль 123
В приложении форма заказа, составленная с помощью Alex_ST, за что ему огромное спасибо. Но теперь эту форму нужно отправить клиенту, чтобы он сам мог ее предварительно заполнить и отправить нам уже готовый заказ. При этом хотелось бы обезопасить файл от намеренных либо случайных нежелательных изменений. Но когда я защищаю лист, при выборе "Обработки торцов" выходит ошибка. Что я делаю не так? Как правильно защитить лист, чтобы макрос работал?
Sub Auto_Open() Worksheets("Заявка").Protect Password:="1234", UserInterfaceOnly:=True Worksheets("Цена МДФ кв.м.").Protect Password:="1234", UserInterfaceOnly:=True Worksheets("Инструкция").Protect Password:="1234", UserInterfaceOnly:=True End Sub
[/vba]
В модуль книги: [vba]
Code
Sub Auto_Open() Worksheets("Заявка").Protect Password:="1234", UserInterfaceOnly:=True Worksheets("Цена МДФ кв.м.").Protect Password:="1234", UserInterfaceOnly:=True Worksheets("Инструкция").Protect Password:="1234", UserInterfaceOnly:=True End Sub
Jhonson, а почему позволяется изменять ячейки "Наименование" как в первой так и во второй таблице? подразумевалось, что можно менять только зеленые ячейки.
Jhonson, а почему позволяется изменять ячейки "Наименование" как в первой так и во второй таблице? подразумевалось, что можно менять только зеленые ячейки.Rusel
Private Sub Workbook_Open() Dim Sh As Object For Each Sh In Me.Sheets Protect_for_User Sh Next End Sub Sub Protect_for_User(Sh As Object) Sh.Protect Password:="1234", UserInterfaceOnly:=True End Sub
[/vba]
Тогда так, в модуль ЭтаКнига:
[vba]
Code
Private Sub Workbook_Open() Dim Sh As Object For Each Sh In Me.Sheets Protect_for_User Sh Next End Sub Sub Protect_for_User(Sh As Object) Sh.Protect Password:="1234", UserInterfaceOnly:=True End Sub
Jhonson, Вот эта работает нормально. А если мне надо поменять пароль, тогда я меняю в Модуле вот это выражение Protect Password:="1234" для каждого листа?
Jhonson, Вот эта работает нормально. А если мне надо поменять пароль, тогда я меняю в Модуле вот это выражение Protect Password:="1234" для каждого листа?Rusel
Только учтите, что меняя пароль, Вам перед сохранением нужно будут снять защиту со всех листов (со старым паролем!), иначе при открытии возможно будет вылезать ошибка!
Только учтите, что меняя пароль, Вам перед сохранением нужно будут снять защиту со всех листов (со старым паролем!), иначе при открытии возможно будет вылезать ошибка!Jhonson
"Ничто не приносит людям столько неприятностей, как разум."
Сообщение отредактировал Jhonson - Вторник, 14.02.2012, 14:04
Rusel, кроме защиты листов книги не плохо было бы спрятать лист-справочник "Цена МДФ кв.м." Посмотрите топик Надстройка "Управление видимостью листов" Там я выложил надстройку, которую я сам достаточно часто использую когда нужно какой-то лист спрятать.
Rusel, кроме защиты листов книги не плохо было бы спрятать лист-справочник "Цена МДФ кв.м." Посмотрите топик Надстройка "Управление видимостью листов" Там я выложил надстройку, которую я сам достаточно часто использую когда нужно какой-то лист спрятать.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Среда, 15.02.2012, 10:17
Руслан, надеюсь, вы надстройку установили у себя на компе, раз умудрились лист спрятать? А тогда опять ПКМ на оставшемся видимым листе нажать не слабо? И там уж выбрать пункт "Управление видимостью..." Откроется форма со всеми имеющимися в книге листами. Как видимыми, так и скрытыми, и даже шибко заныканными
Quote (Rusel)
спрятал. как теперь его опять увидеть?
Руслан, надеюсь, вы надстройку установили у себя на компе, раз умудрились лист спрятать? А тогда опять ПКМ на оставшемся видимым листе нажать не слабо? И там уж выбрать пункт "Управление видимостью..." Откроется форма со всеми имеющимися в книге листами. Как видимыми, так и скрытыми, и даже шибко заныканными Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Среда, 15.02.2012, 13:44
Нашел в данном топике сразу 2 свои проблемы. Еле создал некий проект, состит он из 49 листов с кучей таблиц. Мне необходимо теперь защитить его от субъектов и скрыть ряд вкладок (хорошо скрыть). Но возникла проблема. 1. Листы, которые скрываю через xlSheetVeryHidden, после сохранения и открытия файла почему-то становятся просто скрытыми и их можно открыть через "Вывод на экран скрытого листа". Кто-нить может подсказать, почему?
2. Использую данный код [vba]
Код
Private Sub Workbook_Open() Dim Sh As Object For Each Sh In Me.Sheets Protect_for_User Sh Next End Sub Sub Protect_for_User(Sh As Object) Sh.Protect Password:="1234", UserInterfaceOnly:=True End Sub
[/vba]
Защищается все отлично, макросы работают...но, я пытаюсь установить определенные параметры защиты листа, в т.ч. даю разрешение на форматирование строк и изменение объектов (т.к. нужна возможность проставлять примечания). После сохранения и открытия файла, параметры доступа стираются и остается только выделение заблокированных и незаблокированных ячеек. Подскажите где ошибка!?
Спасибо!
Добрый вечер,
Нашел в данном топике сразу 2 свои проблемы. Еле создал некий проект, состит он из 49 листов с кучей таблиц. Мне необходимо теперь защитить его от субъектов и скрыть ряд вкладок (хорошо скрыть). Но возникла проблема. 1. Листы, которые скрываю через xlSheetVeryHidden, после сохранения и открытия файла почему-то становятся просто скрытыми и их можно открыть через "Вывод на экран скрытого листа". Кто-нить может подсказать, почему?
2. Использую данный код [vba]
Код
Private Sub Workbook_Open() Dim Sh As Object For Each Sh In Me.Sheets Protect_for_User Sh Next End Sub Sub Protect_for_User(Sh As Object) Sh.Protect Password:="1234", UserInterfaceOnly:=True End Sub
[/vba]
Защищается все отлично, макросы работают...но, я пытаюсь установить определенные параметры защиты листа, в т.ч. даю разрешение на форматирование строк и изменение объектов (т.к. нужна возможность проставлять примечания). После сохранения и открытия файла, параметры доступа стираются и остается только выделение заблокированных и незаблокированных ячеек. Подскажите где ошибка!?
Скорее всего в Auto_Open / Workbook_Open / Auto_Close / Workbook_BeforeClose Но без файла более точно предсказать нельзя. Так что правильно сказал Серж:
Скорее всего в Auto_Open / Workbook_Open / Auto_Close / Workbook_BeforeClose Но без файла более точно предсказать нельзя. Так что правильно сказал Серж:
Serge_007, добрый день По всей видимости я нарушил правило о прикреплении файла. У меня действительно нет возможности выкладывать файлы. Работаю в банке доступы закрыты. Слава богу вообще форум этот не в стоп листе, а то вообще бы не знал что делать. Прошу о снисхождеии, если это действительно это нарушение.
Alex_ST, Что касается данных процедур Auto_Open / Workbook_Open / Auto_Close / Workbook_BeforeClose. Первое что пришло в голову -заменил Workbook_Open на Auto_Open. Теперь, если скрывать листы xlSheetVeryHidden - "ок", блокировать листы данный макрос:
[vba]
Код
Private Sub Auto_Open () Dim Sh As Object For Each Sh In Me.Sheets Protect_for_User Sh Next End Sub Sub Protect_for_User(Sh As Object) Sh.Protect Password:="1234", UserInterfaceOnly:=True End Sub
[/vba]
перестал. Но если блокировать листы вручную с назначением нужного редактирования - ок. Трудоемко, но результат есть. Возможно подскажите, ошибку? Пока потестирую, но в любом случае Alex_ST, огромное Спасибо!!!
Serge_007, добрый день По всей видимости я нарушил правило о прикреплении файла. У меня действительно нет возможности выкладывать файлы. Работаю в банке доступы закрыты. Слава богу вообще форум этот не в стоп листе, а то вообще бы не знал что делать. Прошу о снисхождеии, если это действительно это нарушение.
Alex_ST, Что касается данных процедур Auto_Open / Workbook_Open / Auto_Close / Workbook_BeforeClose. Первое что пришло в голову -заменил Workbook_Open на Auto_Open. Теперь, если скрывать листы xlSheetVeryHidden - "ок", блокировать листы данный макрос:
[vba]
Код
Private Sub Auto_Open () Dim Sh As Object For Each Sh In Me.Sheets Protect_for_User Sh Next End Sub Sub Protect_for_User(Sh As Object) Sh.Protect Password:="1234", UserInterfaceOnly:=True End Sub
[/vba]
перестал. Но если блокировать листы вручную с назначением нужного редактирования - ок. Трудоемко, но результат есть. Возможно подскажите, ошибку? Пока потестирую, но в любом случае Alex_ST, огромное Спасибо!!!qshin1980
Сообщение отредактировал qshin1980 - Среда, 13.11.2013, 09:36