Страницы: 1
RSS
Частичная защита листа
 
Можно защитить лист (он содержит сводную и обычные таблицы), но при этом оставить возможность обновлять сводную таблицу? Цель - исключить возможность редактировать ячейки в обычных таблицах. "Поиграл" с настройками защиты листа. Ни при каких из них не позволил обновить сводную.
 
А Вы не обращали внимания на окошко, которое появляется при защите листа? Вы там еще пароль вводите. Оно как раз позволяет некоторые разрешения при защите задать. Есть там такой пункт "Использование отчетов сводной таблицы". Поставьте на него галочку и можно будет использовать сводную.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Я тоже так думал. Но... попробуйте, и увидите, что это не помогает(((
Более того, я все галочки на всякий случай активировал. Не помогло.
 
Обновлять не будет, т.к. предполагается, что исходные данные нельзя менять. Если меняете исходные данные макросом - то и обновляйте макросом. Но как показывает практика обновлять сводную нет необходимости, если доступ к редактированию исходных данных защищен. Зачем Вам обновление, если исходные данные Вы менять запрещаете? Что обновлять-то, если данные не меняются?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
У меня исходные данные на другом листе, не защищенном. Обновление пробовал и макросом. Тоже не работает...
Вот этот файл. Пароль для снятия защиты листа 123. Файл содержит код
Код
Sub Refresh_All()
    ThisWorkbook.RefreshAll
End Sub
 
Обновление макросом должно быть по следующей схеме:
-сняли кодом защиту с листа со сводной;
-обновили;
-установили заново.

Или так: Как защитить лист от пользователя, но не от макроса?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо за подсказку. Вставил на лист кнопку "Обновить", и связал с ней код:
Код
Sub Refresh_All()
    ActiveSheet.Unprotect Password:="123"
    ActiveSheet.PivotTables("СводнаяТаблица3").PivotCache.Refresh
    ActiveSheet.Protect Password:="123"
End Sub
 
День добрый, имеется таблица, стоит автофилтр (столбец в котором нужны только только 1), защищаю лист, естественно разрешаю использования авто фильтра, но его можно выполнить но только в ручную "Применить повторно" уже не горит. а столбец по которой идет сортировка скрыт специально. можно ли сделать макрос где на листе будет кнопка обновить, а лист будет защищен, и автофильт будет обновляться, ну или хотя бы макрос который откроет кнопку "Применить повторно". и этот мокром должен запускать с загрузкой самой страницей, расчетом будут пользоваться пользователи, с трудом и экселем умеют пользоваться, пробовал готовые решения, но что то не получается, название листа "Комплектация"
 
Создал кнопку привязал к ней макрос
Код
Sub Autofiltr2()
    ActiveSheet.AutoFilter.ApplyFilter    
End Sub

предварительно в исходный код книги разрешил автофильтр (без этого не работало). также разрешил книге форматирование строк и столбцов (двигать размеры столбцов и строк)
Код
Private Sub Workbook_Open()
    'включаем защиту первого листа для пользователя, но не макроса
    Worksheets("Комплектация").Protect Password:="25050204", UserinterfaceOnly:=True
    Sheets("Комплектация").EnableAutoFilter = True
    Sheets("Комплектация").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True, AllowFormattingRows:=True
     
    'второй лист защищаем аналогично, но с возможностью пользоваться группировкой
    Worksheets("кухня расчет").EnableOutlining = True
    Worksheets("кухня расчет").Protect Password:="25050204", UserinterfaceOnly:=True
End Sub

Может кому пригодится  
Обновляется по кнопке, все остальное грузится при открытии  
Изменено: greatsky - 19.01.2017 00:43:44
 
Вот только почему снимается защита без пароля?  
 
Потому что без пароля повторно устанавливается:
Код
Sheets("Комплектация").Protect DrawingObjects:=True, ...
 
так и чтобы все работало. но пароль был как код должен выглядеть? и лишних тело движении не было?  
Изменено: greatsky - 04.08.2016 17:53:24
 
Все что написано в первой и второй строке, объединить с третьей, первую и вторую удалить.
Изменено: Влад - 04.08.2016 17:56:11
 
Легко сказать, чета чего-то не получается  
 
Как-то так:
Код
Sheets("Комплектация").Protect Password:="25050204", UserinterfaceOnly:=True, DrawingObjects:=True, _
Contents:=True, Scenarios:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering:=True
Изменено: Влад - 04.08.2016 18:00:52
 
Влад спасибо, все работает, самому не получалось
 
Добрый вечер друзья.
Мне нужно на одном листе с помощю макроса защитить все ячейки кроме B3:B6, B10, B12, E1:O1
Нашел в одном месте нижеуказанный код. Но это только для одного диапазона. Не могу вписать туда все мне нужные диапазоны и ячейки.

Помогите плз, как это делается?
Заранее спасибо.

Похожий пример для одного диапазона:
Код
Sub BAZA()
    ScrollArea = "A1:A5"
End Sub
 
а так и пишите:
Код
Range("B3:B6, B10, B12, E1:O1")
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Тоесть так Вы имеете ввиду?
Код
Sub Ambaramaldaxilet()
   ScrollArea = Range("B3:B8", "B10", "B12")
End Sub
Изменено: elnur_quba - 20.01.2017 20:22:03 (Кавычки забыл)
 
нет, я имел ввиду то, что написал
Range("B3:B6, B10, B12, E1:O1")    (без всяких дополнительных кавычек внутри)
так можно обратится к несмежному массиву
например
Range("B3:B6, B10, B12, E1:O1").Select
а для чего нужен Вам несмежный массив - я ни сном ни духом... извините
сможете сформулировать вопрос - возможно получите ответ, а пока нет вопроса, глупо ожидать ответа "в десятку"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вот я вложил пример-форма для ввода данных.
В этом листе мне нужно сделать так чтобы вручную можно было ввести данные только на белые ячейки. Но объязательно макросом, а не "Защитой листа" через меню Рецензирование.
И ещё вот что я ещё заметил: Я уже сделал похожие процедуры в других листах (в тех где достаточно вставить блок в конкретный диапозон, или в конкретную одну ячейку), но после повторного открытия файла почему то приходиться заново все ввести. Проковырялся в параметрах безопасности, но не смог найти причину.
 
Цитата
elnur_quba написал: Но объязательно макросом
Цитата
elnur_quba написал: Я уже сделал похожие процедуры
И где они?
 
ни одного макроса в книге не обнаружено - следовательно вводить данные нечем
хотя В3:В6, В10, В12
а так же
D1:XFD12 и 13:1048576 явно прослеживаются на листе как "белые" ячейки
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Я понял Вас!
Завта я отправлю Вам в ЛС сам файл. Там уже будут видны макросы.
Спасибо
 
1)      На листе AMALIYYAT_DAXIL_ET создана форма для ввода данных. Мне нужно сделать так, чтобы кассир смог ввести информацию только на ячейки B3:B6, B10 и B12.
2)      В этом же файле в листе AMALIYYAT_BAZASI есть макрос для защиты ячеек кроме A1:K1. Но к сожалению его нужно каждый раз включать. Тоесть при повторном открытии файла макрос перестаёт работать и практически весь материал на листе становится доступным для изменения.
Буду благодарен если кто то поможет мне в этом.
 
а) на листе AMALIYYAT_DAXIL_ET именно так все и работает, лист защищен, открыты для редактирования только B3:B6, B10 и B12. так есть, а что нужно???
б) на листе AMALIYYAT_BAZASI действительно есть макрос
Код
Sub Amaliyyat_bazasi()
  ScrollArea = "A1:K1"
End Sub
только:
1. это устанавливает область видимости (область возможного положения курсора) для листа AMALIYYAT_BAZASI и больше ничего!
2. он не имеет НИКАКОГО отношения к установке/снятию защиты
3. он не имеет НИКАКОГО отношения к листу AMALIYYAT_DAXIL_ET, в котором должен работать бухгалтер
Изменено: Ігор Гончаренко - 22.01.2017 14:16:55
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Кнопка цитирования не для ответа [МОДЕРАТОР]
б)Да на листе есть макрос. Но, если закрыть файл, а потом снова открыть то макрос не работает. Приходится вручную включить его, тоесть сделать "Выполнить".

1) и 2) При нажатии на кнопку DAXIL ET на листе AMALIYYAT_DAXIL_ET Excel копирует информацию из строк формы ввода, потом вставляет на пустой диапазон на листе AMALIYYAT_BAZASI, дальше, создаёт новую строку и возврашавщись на AMALIYYAT_DAXIL_ET очищает информацию из ячеек B3:B6, B10, B12.
Если не сделать это макросом, а путём Рецензирование>Защита листа то  при нажатии на кнопку "DAXIL ET" на листе AMALIYYAT_BAZASI даёт ошибку (типа 1004 -ячейка защищена от изменений)
3) Оставлять доступным ячейки на листе AMALIYYAT_BAZASI тоже нельзя, чтобы кассир на смог вручную сделать изменения в свою пользу.

Думаю смог я описать всю историю. Теперь прошу Вас, если есть возможность помогите мне с макросами.
Только диапозоны на листах чуть изменились. Но суть та же остаётся.
В листе AMALIYYAT_DAXIL_ET  на ячейки -  B3:B6, B10:B11, B13
В листе AMALIYYAT_BAZASI на ячейки A1:M1

Спасибо)
Изменено: elnur_quba - 27.01.2017 18:23:22
 
C формами всё решилось. Остался только защитить AMALIYYAT_BAZASI от посторонних изменений. Нужно чтобы на листе прошли только изменения при нажатии кнопки DAXIL ET который расположен на листе AMALIYYAT_DAXIL_ET. Файл расположен  на предыдушем сообщении.
Прошу помогите, очень нужна!
 
Друзья, моя проблема решена.
Спасибо всем, а особенно The_Prist.
Страницы: 1
Наверх