|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.09.2009, 14:00 | #1 |
Пользователь
Регистрация: 01.07.2007
Сообщений: 41
|
Почему снимается защита с защищенных ячеек?
Есть рабочая книга с листами.
Я все листы запаролил (ячейки защищены) и книгу тоже. Но странная вещь, на листах защита стоит, а ячейки остаются открытыми для редактирования, как будто ячейки не защищены... Внутри макросы написанные лежат. Что за фича такая? Помогите плиз! |
10.09.2009, 06:29 | #2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
А макросы защиту не снимают?
Давайте пример проблемного файла - разберемся.
Чем шире угол зрения, тем он тупее.
|
02.02.2010, 17:26 | #3 | |
Пользователь
Регистрация: 01.07.2007
Сообщений: 41
|
Цитата:
Защита на рабочей книги не снимается при этом. Вот код для создания чистого файла с рабочего: Sub New_File() Msg = "ВЫ УВЕРЕНЫ, ЧТО ХОТИТЕ ПЕРЕЙТИ НА НОВЫЙ МЕСЯЦ И СДЕЛАТЬ ЧИСТЫЙ ОТЧЕТ?" ans = MsgBox(Msg, vbExclamation + vbYesNo + vbDefaultButton2) If ans = vbYes Then Application.EnableEvents = False 'отключаем обработку событий, 'а именно защиту листка ПРОДАЖА и ВОЗВРАТ ' <<ОБРАБОТКА ЛИСТА ВЫРУЧКА>> ' перенос данных по отчету ВЫРУЧКА Sheets("ВЫРУЧКА").Select ' по 1-ой кассе Range("AH23").Select Selection.Copy Range("D10").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' по 2-ой кассе Range("AH39").Select Selection.Copy Range("D26").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' по 3-ей кассе Range("AH55").Select Selection.Copy Range("D42").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' по 4-ой кассе Range("AH71").Select Selection.Copy Range("D58").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' по 5-ой кассе Range("AH87").Select Selection.Copy Range("D74").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' <<ОБРАБОТКА ЛИСТА ВОЗВРАТ>> ' ОЧИСТКА ДАННЫХ Sheets("ВОЗВРАТ").Select Range("Возврат1,Возврат2,Возврат3,В озврат4,Возврат5").Select Selection.ClearContents Range("C6").Select ' <<ОБРАБОТКА ЛИСТА ПРОДАЖА>> ' перенос данных по отчету продажа и отчистка данных для нового отчета Sheets("ПРОДАЖА").Select ' по 1-ой кассе Range("AH27").Select Application.CutCopyMode = False Selection.Copy Range("D14").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' по 2-ой кассе Range("AH44").Select Application.CutCopyMode = False Selection.Copy Range("D31").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' по 3-ей кассе Range("AH61").Select Application.CutCopyMode = False Selection.Copy Range("D48").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' по 4-ой кассе Range("AH78").Select Application.CutCopyMode = False Selection.Copy Range("D65").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' по 5-ой кассе Range("AH95").Select Application.CutCopyMode = False Selection.Copy Range("D82").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' ОЧИСТКА ДАННЫХ НА ЛИСТЕ ПРОДАЖА ' ДАТА, НОМЕР СУМКИ И ЗАКРЫТИЕ СМЕНЫ ПО 1 КАССЕ, ЗАКРЫТИЕ СМЕНЫ 2 КАССЕ, ' ЗАКРЫТИЕ СМЕНЫ ПО 3 КАССЕ, ЗАКРЫТИЕ СМЕНЫ 4 КАССЕ, 1 КАССА, 2 КАССА, 3 КАССА, 4 КАССА Range("D8,Сумка,Смена1,Смена2,Смена 3,Смена4,Смена5,Продажа1,Продажа2,П родажа3,Продажа4,Продажа5").Select Selection.ClearContents Range("D8").Select Application.Dialogs(xlDialogSaveAs) .Show ("<drive>:\<path>\<Впишите название файла!!!>") Application.EnableEvents = True 'включаем обработку событий, 'а именно защиту листка ПРОДАЖА и ВОЗВРАТ Else ans = vbNo MsgBox "Сделаем файл в другой раз!" End If ' ActiveWorkbook.SaveAs Filename:= _ ' "C:\" , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ' ReadOnlyRecommended:=False, CreateBackup:=False End Sub |
|
02.02.2010, 17:35 | #4 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Выделите ячейки-Правая кнопка мыши-Формат ячеек-вкладка Защита. Скорей всего снят флажок "Защищаемая ячейка".
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
03.02.2010, 06:17 | #5 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Во-первых, кто и как устанавливает защиту листа (листов)? Если это делает пользователь (вручную), то и макрос не сможет изменять защищенные (см. замечание от The_Prist) ячейки. Если же защита устанавливается программно (макросом) с опцией UserInterfaceOnly:=True, то такая защита не сохраняется. Ее нужно повторять каждый раз при открытии книги.
Во-вторых, в Ваших комментариях к коду, читаем: Цитата:
И, наконец. На сколько я понимаю, Ваш макрос создан с помощью макрорекордера. Это нормально. Только после этого необходимо его (код) "почистить", т.е. убрать все лишнее и оптимизировать. К тому же, Вам, наверное, не удалось "прикрутить" к коду процедуру сохранения файла. После такой "чистки", с исправлением фрагмента сохранения, код будет выглядеть примерно так: Код:
Чем шире угол зрения, тем он тупее.
|
|
04.02.2010, 22:47 | #6 |
Пользователь
Регистрация: 01.07.2007
Сообщений: 41
|
SAS888
Спасибо большое за ответ, не ожидал такой раскрытый ответ. Защиту ставлю макросом на все листы сразу. Я включаю обработку событий для того, чтобы пользователь не мог сохранить файл через меню, сохранить как. И еще вроде бы я поставил защиту от копирования ячеек. Это для блондинок... Да, я пишу макрорекордером, потом лишнее убираю. Но я смотрю можно еще больше лишнего убрать. С сохранение тоже нет проблем, я сделал это так, чтобы создать новый чистый отчет, а это сохранить. Не подскажите литературу для новичка, чтобы более углубленно изучить VB? |
05.02.2010, 04:49 | #7 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Во-вторых, лучшая книга, это Дж.Уокенбах "Профессиональное программирование на VBA Excel 2002 (2003)". В-третьих, воспользуйтесь поиском (расширенным поиском) по этому вопросу. В данном топике не однократно выкладывались ссылки на полезную литературу и сайты.
Чем шире угол зрения, тем он тупее.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
макрос - подсчитать для каждой строки кол-во ячеек с «+», кол-во ячеек с «-» | Vadim_abs | Microsoft Office Excel | 36 | 14.07.2009 12:08 |
Защита ячеек | Levchik | Microsoft Office Excel | 1 | 02.02.2009 08:15 |
Защита ячеек от вырезания и копирования | Freerider1972 | Microsoft Office Excel | 1 | 23.12.2008 20:57 |
Протокол защищенных электронных транзакций Set | Nathan | Помощь студентам | 3 | 27.01.2007 16:08 |