Задача:
Workbook содержит несколько рабочих листов. Необходимо обеспечить а в т о р и з о в а н н ы й доступ пользователей к этим листам. Пользователь может просматривать все листы, редактировать только свой лист (ввод пароля). Все пользователи имеют право записи в каталоге Workbook'а.
Листы можно прятать, можно копировать во "временную" Workbook, можно...
Есть идеи :?:
(Стандартный способ Worksheet.Protect - тоже вариант, но последний...)
Worksheet. Доступ.
Модератор: Naeel Maqsudov
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Обработать SheetActivate и SheetChange у книги.
И не говорить пользователям, что нельзя нажимать Alt-F11
И не говорить пользователям, что нельзя нажимать Alt-F11

Нет, так пробовал! Есть некоторые пользователи, которые любят "включать режим конструктора", пробовать сочетания клавиш "Ctrl+Break", ломать пароли к VBAProject'ам...
Я нашел один способ, но он очень "косвенный"...
Я нашел один способ, но он очень "косвенный"...
- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
Sokl,
От хитрож... от хитрого пользователя не спасет ничто. Можно обвешать Excel разными примочками и протектерами, задействовать управление проектом и подключаемыми ActivexDLL, но это будет уже не Excel, а что-то другое. Абсолютной защиты не выйдет пока данные будут храниться в самом файле Excel, пользователь всегда может открыть его с отключенными макросами и из другой книги запустить подбор пароля к VBProject или быстро подобрать защиту листа.
Короче моя идея состоит в том, что каждому пользователю по файлу с его листом, файл защищенный на открытие паролем и надежным алгоритмом, разделение прав пользователей на файловом сервере. И отдельный, доступный основному владельцу файл Excel или база данных Acces, которая взаимодействует с файлами, имеющими ограниченные права, делает импорт-экспорт в книги с ограниченными правами. Как-то так. Что вы думаете?
Поделишься находкой с нами?Я нашел один способ, но он очень "косвенный"...
От хитрож... от хитрого пользователя не спасет ничто. Можно обвешать Excel разными примочками и протектерами, задействовать управление проектом и подключаемыми ActivexDLL, но это будет уже не Excel, а что-то другое. Абсолютной защиты не выйдет пока данные будут храниться в самом файле Excel, пользователь всегда может открыть его с отключенными макросами и из другой книги запустить подбор пароля к VBProject или быстро подобрать защиту листа.
Короче моя идея состоит в том, что каждому пользователю по файлу с его листом, файл защищенный на открытие паролем и надежным алгоритмом, разделение прав пользователей на файловом сервере. И отдельный, доступный основному владельцу файл Excel или база данных Acces, которая взаимодействует с файлами, имеющими ограниченные права, делает импорт-экспорт в книги с ограниченными правами. Как-то так. Что вы думаете?
На заказ: VBA, Excel mc-black@yandex.ru
Понравился правильный подход - сначала стратегически все выстроить и только потом делать. Я на эти эксперименты кучу времени потратил. Готов поделиться к чему пришел на текущий момент (правильно понял вопрос):
Решил пока так: все листы в файле за исключением двух (оставил, поскольку надо что-то видимое оставлять) скрыты. Доступ до кода, понятно, защищен. Доступ до книги, понятно, защищен. При открытии файла если пользователь отключает макросы, то видит только два листа и надо потрудиться все же над паролем доступа до кода vba, но даже если добрался, то еще надо потрудиться над кодом доступа до защиты снятия пароля с книги (иначе листы не сделать видимыми). Защита может и не абсолютная, но уже заморочки для злоумышленника.
Далее, при открытии с макросами выводится форма авторизации - нужно ввести свои имя и пароль (Пароли содержатся в отдельном файле открытие которого скрыто от глаз пользователя - даже добравшись до кода файла еще надо покопаться, чтобы понять что пароли в другой книге, которая, понятно, в свою очередь защищена). Так я узнаю какой именно пользователь открыл файл и соответственно открываю те листы разрешение на просмотр или изменение которых за данным пользователем закреплено (реально у меня прямо жестких условий не было по просмотру, то есть просматривать могут пока все, но, полагаю, если появятся, то согласно присвоенным статусам или отделам скрывать или открывать те или иные листы не проблема).
При любом сохранении файла и его закрытии листы "прячутся" обратно и проверяется выставлен ли пароль на книгу плюс пароли на запароленные листы. Если нет - выставляются.
Для усиления защиты пароли на книгу и листы я сделал динамическими: открыв книгу по одному паролю (у меня пока их 50), excel закрывает ее под другим. Таким образом даже если пользователь вдруг подобрал пароль при следующем открытии он уже будет заменен.
Решил пока так: все листы в файле за исключением двух (оставил, поскольку надо что-то видимое оставлять) скрыты. Доступ до кода, понятно, защищен. Доступ до книги, понятно, защищен. При открытии файла если пользователь отключает макросы, то видит только два листа и надо потрудиться все же над паролем доступа до кода vba, но даже если добрался, то еще надо потрудиться над кодом доступа до защиты снятия пароля с книги (иначе листы не сделать видимыми). Защита может и не абсолютная, но уже заморочки для злоумышленника.
Далее, при открытии с макросами выводится форма авторизации - нужно ввести свои имя и пароль (Пароли содержатся в отдельном файле открытие которого скрыто от глаз пользователя - даже добравшись до кода файла еще надо покопаться, чтобы понять что пароли в другой книге, которая, понятно, в свою очередь защищена). Так я узнаю какой именно пользователь открыл файл и соответственно открываю те листы разрешение на просмотр или изменение которых за данным пользователем закреплено (реально у меня прямо жестких условий не было по просмотру, то есть просматривать могут пока все, но, полагаю, если появятся, то согласно присвоенным статусам или отделам скрывать или открывать те или иные листы не проблема).
При любом сохранении файла и его закрытии листы "прячутся" обратно и проверяется выставлен ли пароль на книгу плюс пароли на запароленные листы. Если нет - выставляются.
Для усиления защиты пароли на книгу и листы я сделал динамическими: открыв книгу по одному паролю (у меня пока их 50), excel закрывает ее под другим. Таким образом даже если пользователь вдруг подобрал пароль при следующем открытии он уже будет заменен.
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Когда у меня разок встал подобный вопрос - я просто стал хранить данные на
SQL сервере с динамическим заполнением страниц содержащих конфиденциальную информацию и аутенификацией пользователя при входе в домен.
Т.е в рабочей книге только макро код для анализа данных диаграммы и некоторые безобидные константы. Если данные изменяются они так же сохраняются на сервер.
Причём в качестве SQL cервера не обязательно использовать MS SQL.
Всё вполне работает и с бесплатной "Огненной птицей"
SQL сервере с динамическим заполнением страниц содержащих конфиденциальную информацию и аутенификацией пользователя при входе в домен.
Т.е в рабочей книге только макро код для анализа данных диаграммы и некоторые безобидные константы. Если данные изменяются они так же сохраняются на сервер.
Причём в качестве SQL cервера не обязательно использовать MS SQL.
Всё вполне работает и с бесплатной "Огненной птицей"

Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com