Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Правильная организация защиты ячеек для макросов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Правильная организация защиты ячеек для макросов (Макросы/Sub)
Правильная организация защиты ячеек для макросов
Serrg Дата: Суббота, 07.03.2015, 05:44 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Подскажите, пожалуйста, как лучше организовать защиту ячеек для следующего случая:
1. Файл будет сделан общим, в нем будут работать несколько пользователей.
2. На Листе1 пользователю разрешено вручную вводить данные во все столбцы, кроме столбца А. Столбец А заполняется автоматически макросом (там у меня форма с выбором из списка).
3. Нужно запретить пользователю вводить вообще любые данные на ВСЕХ листах, если у него не включены макросы. Мне это нужно, т.к. у меня ведется лог кто какую ячейку изменил. Лог ведется макросом. Т.е. если они смогут что-то ввести не включив макросы, то у меня это не залогируется.
4. На Листе2 находится наполнение для выпадающего списка. Этот лист полностью недоступен для редактирования и может опять же заполняться только макросом из формы.
5. Пользователи могут быть с достаточно хорошим знанием Excel и VBA, поэтому хочется чтобы защита действительна была надежной и не могли ни записать вручную значения закрытых ячеек, ни вскрыть пароль.

Как правильнее сделать защиту:
6. Либо у самих листов и нужных столбцов поставить признак что они могут заполняться любыми методами кроме UserInterface. Надежен ли такой метод?
7. Либо закрыть нужные столбцы и листы совсем, но при этом когда макрос будет записывать данные, будет делаться Unprotect, затем запись данных, затем Protect. Но в этом случае придется в явном виде прописывать пароль листов.
8. Если метод с признаком на листе не подходит (не надежен), и придется в макросе явно прописывать пароль, то как обеспечить чтобы пользователи не могли его увидеть? Или в любом случае смогут увидеть при желании в коде?
9. Как сделать защиту что нельзя вводить никакие данные если не включены макросы?
10. Какие есть подводные камни с такой защитой при одновременном доступе к файлу (если он сделан общим). Я по списку смотрел, вроде мои макросы не делают ничего запрещенного из того, что недоступно при общем доступе.
11. Как лучше делать обработку коллизий одновременного изменения пользователями данных - по умолчанию ранние имеют приоритет? Или дать пользователю выбирать что сохранить при коллизиях? Но тогда как сохранять те ячейки, которые заполняются только макросом (при выборе из списка)? Разве Excel даст пользователю выбрать вариант сохранения, если для него эта ячейка недоступна для ввода вручную?
12. Как лучше обновлять файл (если один что-то внес в ячейки, заполняемые макросом, чтобы у других быстро это отобразилось), чтобы не было коллизий? Сделать настройку раз в минуту? Или может макросом можно сохранить только измененную часть данных, чтобы не сохранять весь файл целиком каждый раз?
13. Ну и в целом, как по науке правильно делать защиту, чтобы только макрос мог писать в некоторые столбцы и пользователи не могли ничего сделать не включив макросы?
14. Если не сложно, не могли бы при ответе привести конкретные строки кода VBA, которые нужно добавить на листы?
 
Ответить
СообщениеПодскажите, пожалуйста, как лучше организовать защиту ячеек для следующего случая:
1. Файл будет сделан общим, в нем будут работать несколько пользователей.
2. На Листе1 пользователю разрешено вручную вводить данные во все столбцы, кроме столбца А. Столбец А заполняется автоматически макросом (там у меня форма с выбором из списка).
3. Нужно запретить пользователю вводить вообще любые данные на ВСЕХ листах, если у него не включены макросы. Мне это нужно, т.к. у меня ведется лог кто какую ячейку изменил. Лог ведется макросом. Т.е. если они смогут что-то ввести не включив макросы, то у меня это не залогируется.
4. На Листе2 находится наполнение для выпадающего списка. Этот лист полностью недоступен для редактирования и может опять же заполняться только макросом из формы.
5. Пользователи могут быть с достаточно хорошим знанием Excel и VBA, поэтому хочется чтобы защита действительна была надежной и не могли ни записать вручную значения закрытых ячеек, ни вскрыть пароль.

Как правильнее сделать защиту:
6. Либо у самих листов и нужных столбцов поставить признак что они могут заполняться любыми методами кроме UserInterface. Надежен ли такой метод?
7. Либо закрыть нужные столбцы и листы совсем, но при этом когда макрос будет записывать данные, будет делаться Unprotect, затем запись данных, затем Protect. Но в этом случае придется в явном виде прописывать пароль листов.
8. Если метод с признаком на листе не подходит (не надежен), и придется в макросе явно прописывать пароль, то как обеспечить чтобы пользователи не могли его увидеть? Или в любом случае смогут увидеть при желании в коде?
9. Как сделать защиту что нельзя вводить никакие данные если не включены макросы?
10. Какие есть подводные камни с такой защитой при одновременном доступе к файлу (если он сделан общим). Я по списку смотрел, вроде мои макросы не делают ничего запрещенного из того, что недоступно при общем доступе.
11. Как лучше делать обработку коллизий одновременного изменения пользователями данных - по умолчанию ранние имеют приоритет? Или дать пользователю выбирать что сохранить при коллизиях? Но тогда как сохранять те ячейки, которые заполняются только макросом (при выборе из списка)? Разве Excel даст пользователю выбрать вариант сохранения, если для него эта ячейка недоступна для ввода вручную?
12. Как лучше обновлять файл (если один что-то внес в ячейки, заполняемые макросом, чтобы у других быстро это отобразилось), чтобы не было коллизий? Сделать настройку раз в минуту? Или может макросом можно сохранить только измененную часть данных, чтобы не сохранять весь файл целиком каждый раз?
13. Ну и в целом, как по науке правильно делать защиту, чтобы только макрос мог писать в некоторые столбцы и пользователи не могли ничего сделать не включив макросы?
14. Если не сложно, не могли бы при ответе привести конкретные строки кода VBA, которые нужно добавить на листы?

Автор - Serrg
Дата добавления - 07.03.2015 в 05:44
Nic70y Дата: Суббота, 07.03.2015, 07:58 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8789
Репутация: 2282 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
    ActiveSheet.Unprotect
      Call macro18
      ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
[/vba]
так не подходит?


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Суббота, 07.03.2015, 07:58
 
Ответить
Сообщение[vba]
Код
    ActiveSheet.Unprotect
      Call macro18
      ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
[/vba]
так не подходит?

Автор - Nic70y
Дата добавления - 07.03.2015 в 07:58
Serrg Дата: Суббота, 07.03.2015, 16:41 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А по остальным не скажете?

И еще, как можно сделать так, чтобы не было видно кода VBA макросов?
 
Ответить
СообщениеА по остальным не скажете?

И еще, как можно сделать так, чтобы не было видно кода VBA макросов?

Автор - Serrg
Дата добавления - 07.03.2015 в 16:41
RAN Дата: Суббота, 07.03.2015, 16:44 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
пароль на VBA


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщениепароль на VBA

Автор - RAN
Дата добавления - 07.03.2015 в 16:44
Serrg Дата: Суббота, 07.03.2015, 17:33 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Господа, и все же, не могли бы подсказать как можно защитить листы Excel от пользователя, но разрешить запись макросом, но при этом не указывая в VBA в явном виде пароль? Потому что все эти методы, которые я видел, требуют указания пароля в коде.
Для
[vba]
Код
ActiveSheet.Unprotect
[/vba]
[vba]
Код
ActiveSheet.Protect
[/vba]
нужно указывать пароль в явном виде...

Как сделать так, чтобы пользователь ничего не мог ввести на листе, пока не включил макросы?

Ну и по остальным вопросам, в частности при многопользовательской работе и коллизиях при записи значений в ячейку (если в эту ячейку писать может только макрос)
 
Ответить
СообщениеГоспода, и все же, не могли бы подсказать как можно защитить листы Excel от пользователя, но разрешить запись макросом, но при этом не указывая в VBA в явном виде пароль? Потому что все эти методы, которые я видел, требуют указания пароля в коде.
Для
[vba]
Код
ActiveSheet.Unprotect
[/vba]
[vba]
Код
ActiveSheet.Protect
[/vba]
нужно указывать пароль в явном виде...

Как сделать так, чтобы пользователь ничего не мог ввести на листе, пока не включил макросы?

Ну и по остальным вопросам, в частности при многопользовательской работе и коллизиях при записи значений в ячейку (если в эту ячейку писать может только макрос)

Автор - Serrg
Дата добавления - 07.03.2015 в 17:33
Manyasha Дата: Воскресенье, 08.03.2015, 14:54 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Serrg, здравствуйте. В общей книге код vba не доступен, т.е., чтобы пользователь смог увидеть код макроса, ему нужно отключить общий доступ к файлу (что может привести к нехорошим последствиям). Но можно предположить, что юзер сообразит сохранить книгу локально и отключит общий доступ, а значит, сможет увидеть код VBA. Чтобы запретить ему убирать общий доступ к файлу, можно на вкладке рецензирование нажать "защитить книгу и дать общий доступ", ввести пароль и сохранить. Тогда, без знания пароля общий доступ нельзя будет убрать, даже если сохранить книгу локально. Второй вариант: защитить сам проект VBA. Тогда, при попытке открыть модули книги, будет выскакивать окошко, с просьбой ввести пароль.

разрешить запись макросом
Сейчас попробовала записать макрос в общей книге: автоматически создался новый файл, записанный макрос можно увидеть в модуле нового файла, VBA проект общего, так и остался недоступным.


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Воскресенье, 08.03.2015, 14:55
 
Ответить
СообщениеSerrg, здравствуйте. В общей книге код vba не доступен, т.е., чтобы пользователь смог увидеть код макроса, ему нужно отключить общий доступ к файлу (что может привести к нехорошим последствиям). Но можно предположить, что юзер сообразит сохранить книгу локально и отключит общий доступ, а значит, сможет увидеть код VBA. Чтобы запретить ему убирать общий доступ к файлу, можно на вкладке рецензирование нажать "защитить книгу и дать общий доступ", ввести пароль и сохранить. Тогда, без знания пароля общий доступ нельзя будет убрать, даже если сохранить книгу локально. Второй вариант: защитить сам проект VBA. Тогда, при попытке открыть модули книги, будет выскакивать окошко, с просьбой ввести пароль.

разрешить запись макросом
Сейчас попробовала записать макрос в общей книге: автоматически создался новый файл, записанный макрос можно увидеть в модуле нового файла, VBA проект общего, так и остался недоступным.

Автор - Manyasha
Дата добавления - 08.03.2015 в 14:54
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Правильная организация защиты ячеек для макросов (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!