|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
15.01.2007, 22:02 | #1 |
Форумчанин
Регистрация: 09.01.2007
Сообщений: 108
|
Просмотр листа с использование пароля
Добрый день.
Есть файл, в нем много листов. Возможно, чтобы при нажатии на определенный лист система запрашивала пароль и только после правильного ввода отображала содержимое листа, при непрвавильном пароле содержимое не отображалось. Спасибо. |
16.01.2007, 14:52 | #2 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 524
|
Можно использовать, например, событие рабочего листа Worksheet_Activate() для каждого рабочего листа (небольшой пример можно скачать здесь) или аналогичное событие рабочей книги Workbook_SheetActivate(ByVal Sh As Object)
Но здесь есть свои нюансы: Во-первых, при активации листа будет видно его содержимое, конечно с этим можно бороться, если, например, свернуть окно ActiveWindow.WindowState = xlMinimized или скрыть приложение Application.Visible = False, но в течении небольшого промежутка времени - содержимое всё равно будет отображаться. Во-вторых, при открытии или активации рабочей книги - не возникает активации листа, т.е. будет виден весь лист. Здесь также можно прибегнуть к свёртыванию/скрытию, или перед закрытием и деактивацией книги выделять какой-нибудь "нейтральный" лист, типа оглавления, или даже использовать почти забытые свойства OnSheetActivate/OnSheetDeactivate, но можно поступить по другому, а именно, изначально скрыть все листы, кроме одного (как это было сделано в Вашем прошлом топике), и по мере необходимости отображать нестандартное диалоговое окно, где можно будет выбрать нужный лист и после проверки правильности ввода пароля, отображать выбранный лист. Если такой вариант интересен, то можно создать небольшой пример. |
16.01.2007, 21:28 | #3 |
Форумчанин
Регистрация: 09.01.2007
Сообщений: 108
|
Добрый день, Pashulka.
Вы мне опять очень могли. Предложенного варианта вполне достаточно. Только скажите, пожалуйста, а какой пароль следует вводить для просмотра листа? Спасибо. |
17.01.2007, 02:07 | #4 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 524
|
Asale, Если речь идёт о опубликованном примере, то там используется пароль Dara. Однако, в этом примере при проверке правильности пароля - не учитывается регистр, т.е. допускается ввод DARA, или DarA. Если сие недопустимо, то уберите или закомментируйте инструкцию Option Compare Text. Да, и неплохо бы поставить пароль на VBProject, это "защитит" нужный пароль от праздношатающихся граждан.
P.S. Если листов действительно много, то можно воспользоваться событием рабочей книги Workbook_SheetActivate(ByVal Sh As Object) которое нужно расположить в модуле ThisWorkbook(ЭтаКнига) В этом случае, Вам не придётся прописывать событие Worksheet_Activate() в каждом рабочем листе, но необходимо будет проверять - какой именно лист был активирован. Для этого можно воспользоваться об'ектом Sh (Sh.Name, Sh.CodeName) но и здесь есть свои нюансы, например, при использовании свойства Name желательно помнить, что лист может быть переименован (с этим можно бороться, если установить защиту книги: Сервис-Защита-Защитить книгу-Структура- ...) А при использовании свойства CodeName нужно помнить, что не все листы имеют это свойство, например, листы диалога (с этим можно бороться, если проверять тип листа используя, например, VB функцию TypeName) |
17.01.2007, 07:44 | #5 |
Форумчанин
Регистрация: 09.01.2007
Сообщений: 108
|
Спасибо.
Очень подробная инструкция. СПАСИБО. |
17.01.2007, 23:10 | #6 |
Форумчанин
Регистрация: 09.01.2007
Сообщений: 108
|
Только один ньанс я нашел в данной программе.
Человек при запуске может нажать - "отключить макросы" и после этого он увидит защищаемый лист. Это можно обойти как-нибудь? |
18.01.2007, 06:08 | #7 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 524
|
На самом деле этот пример был создан для демонстрации ввода пароля, а активация листа и скрытие приложения использованы там только для красоты. Что касается отключения макросов и связанного с этим безобразием, то один вариант уже был предложен в конце второго сообщения, второй же вариант заключается в том, что начиная с MS Excel 2000 Вы можете подписать свой проект цифровой подписью. В этом случае, даже при высоком уровне безопасности, Ваши макросы будут выполняться, а при открытии книги не будет появляться диалоговое окно с предпреждением. Если этот вариант интересен, то более подробную информацию Вы сможете получить в офисной справке (см. ключевые слова цифровой сертификат, цифровая подпись)
|
26.01.2007, 21:10 | #8 |
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,051
|
да а как заполучить этот сертификат ... это было бы круто ..
|
26.01.2007, 22:30 | #9 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 524
|
Эти сертификаты делятся на две части : официальные, т.е. зарегистрированные и естественно платные, и собственные, т.е. созданные Вами с использованием файла SELFCERF.EXE (который должен наличествовать на машине, если при установке офиса Вы выбрали опцию установить цифровой сертификат) И для личного использования вполне подойдёт второй вариант.
P.S. Если при запуске вышеупомянутого файла ничего не происходит, то скорее всего причина заключается в версии - MS Office 2000 Rus. В этом случае, можно просто поискать этот файл на сайте корпорации Microsoft. |
27.01.2007, 18:28 | #10 |
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,051
|
у меня все это стоит , я не пойму как подписать ....
Запускаю программу а она отображается в самом минимальном размере, с одной кнопкой [Х] закрыть Последний раз редактировалось Noor; 27.01.2007 в 18:31. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Взлом пароля Windows | mager | Безопасность, Шифрование | 25 | 07.03.2009 22:22 |
hook - перехват пароля | dimonbest | Общие вопросы Delphi | 4 | 15.05.2008 14:24 |
подбор пароля | kixaka | Помощь студентам | 4 | 19.04.2008 08:45 |
Считывание пароля | Terran | Общие вопросы Delphi | 1 | 22.03.2008 20:09 |
Как убрать маскировку пароля без dll?? | techner | Win Api | 4 | 20.04.2007 20:10 |