0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 117
|
|
1 | |
Управление макросами при открытии книги Excel11.04.2007, 23:35. Показов 8153. Ответов 17
Метки нет (Все метки)
Доброго всем времени суток. Вопрос звучит так:
как сделать так, чтобы при открытии книги, в случае если пользователь разрешил запустить макросы открываемой книги, то ничего не делаем, а в случае если он запретил, сообщить ему что он неправ и закрыть книгу. Надеюсь что кто-нибудь знает как это возможно и возможно ли. Заранее благодарен за любой ответ.
0
|
11.04.2007, 23:35 | |
Ответы с готовыми решениями:
17
Excel VBA. Выбор вкладки главного меню при открытии книги Создать приложение в VBA, позволяющее создать примечание при открытии книги Excel Range.Find - ошибка при открытии книги Excel Ошибка при работе с макросами Excel |
2 / 2 / 0
Регистрация: 09.09.2009
Сообщений: 118
|
|
12.04.2007, 01:20 | 2 |
К сожалению, это бесполезно, и даже неправильно, т.к. пользователь имеет право защищаться от макровирусов (это как раз зловредные макросы)
Самый лучший вариант такой. 1. Сначала надо создать свой сертификат цифровой подписи у себя на компе (где разрабатывается макрос). Делается это так. Запустить "C:Program FilesMicrosoft OfficeOffice10SELFCERT.EXE" Там дать какое нибудь имя ну типа "CoolMacrosMaker" :-) 2. При разработке макроса, точнее, когда он уже разработан, надо в редакторе ВБА выйти Tools -> Digital Signature -> Выбрать и выбрать тот сертификат. Но надо учесть, что при каждом изменении макроса, надо выбирать сертификат. Поэтому это лучше делать, когда макрос отлажен и не требует изменений. Теперь, когда пользователь запустит такую книгу, появиться немного другая форма, на которой будет говориться, что там есть сертификат и при первом запуске надо поставить галочку возле "Доверять этому источнику". После этого при 2-м и последующих запусках Ексель не будет спрашивать включать или отключить макросы, он их включит.
0
|
0 / 0 / 0
Регистрация: 05.03.2007
Сообщений: 23
|
|
12.04.2007, 14:45 | 3 |
Закрыть файл при отключенных макросах не возможно, а сообщить можно скажем так: сделать лист на котором будет надпись типа "Вы не включили макрос, закройте книгу и ...", а в Auto_Open поставить скрытие этого лита, соответственно при срабатывание Auto_Open ничего не видно а если не сработал, то надпись видна.
Топорно конечно, но как вариант.
0
|
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 117
|
|
12.04.2007, 17:52 [ТС] | 4 |
Спасибо за ответы, но это не подойдет, в своем случае я хотел четко зафиксировать через маркос кто и что делал, а так получается можно открыть книгу не включая макросы поменять что-нибудь, сохранить, закрыть и ни каких следов.
0
|
0 / 0 / 0
Регистрация: 05.03.2007
Сообщений: 23
|
|
12.04.2007, 19:02 | 5 |
В Auto_close поставить защиту всех литов, в Auto_Open снимать защиту. Тогда при отключении макросов ничего не изменят.
0
|
4 / 4 / 2
Регистрация: 06.03.2011
Сообщений: 151
|
|
12.04.2007, 20:16 | 6 |
Присвой "секретным" листам свойство Visible = xlVeryHidden.
Без включенных макросов увидеть их будет нельзя. Желаю удачи!
0
|
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 117
|
|
12.04.2007, 20:52 [ТС] | 7 |
Vkodor, решение интересное попробовал, обкатал - работает! Но есть одно "но". Дело в том что у меня (если пользователь разрешил все-таки использовать макросы) призакрытии предлагается на выбор три варианта:
1) сохранить и менять версию док-та, 2) сохранить и не менять версию док-та 3) закрыть без сохранения. Проблема заключается в том, что пользователь может в течение сеанса работы с док-ом несколько раз его сохранить, а привыходе и док-та выбрать вариант 3). В этом случае мне уже не попрятать все листы, оставив приэтом инфо-лист. книгу-то нельзя сохранять. Ведь не известно по делу он что-то менял или нет. Что касается варианта предложенного MMOS, я об это тоже сразу подумал, но данное св-во поддерживается версией Excel не ниже 2007, а у юзеров как правило 2000 или 2003. ----- MMOS извини, я пользуюсь 2007 что-то сначала не пошло, поискал в справке, а том сказано что поддерживается с 2007, а сейчас решил: "дай все-таки попробую", попробовал и получилось.
0
|
997 / 356 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
|
12.04.2007, 22:57 | 8 |
По-моему, начиная с Excel 97 у листов во всех версиях Excel есть xlVeryHidden
У меня 2003 сейчас и код Код
ActiveWorkbook.Sheets("Лист3").Visible = xlVeryHidden 'или 2
0
|
0 / 0 / 0
Регистрация: 05.03.2007
Сообщений: 23
|
||||||
13.04.2007, 18:58 | 9 | |||||
также как и AutoOpen в книге есть
0
|
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 117
|
|
13.04.2007, 21:09 [ТС] | 10 |
Понятно что есть: "Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)", только не понятно чем он мне может помочь. Ведь это процедура управляет только событием перед сохранением, вызванным соответствующей командой. Соответственно невозможно при нажатии кнопки "сохранить", взять и спрятать все листы кроме, листа с устрашающей надпиьсю "ТЫ ЗАБЫЛ ВКЛЮЧИТЬ МАКРОСЫ" .
Возможно я чего-то не знаю?
0
|
4 / 4 / 2
Регистрация: 06.03.2011
Сообщений: 151
|
|
13.04.2007, 21:13 | 11 |
В своё время создал много проектов на Excel VBA и пришёл к выводам:
1) от пользователя надо прятать всё, что можно 2) всё, что вводится, должно жёстко контролироваться 3) нельзя предоставлять пользователю контроль над сохранением. Выполнение этих правил избавляет от многоих проблем. Желаю успехов!
0
|
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 117
|
|
13.04.2007, 21:25 [ТС] | 12 |
0
|
4 / 4 / 2
Регистрация: 06.03.2011
Сообщений: 151
|
|
13.04.2007, 21:36 | 13 |
Прочитай ещё раз пункт 2.
Если действия пользователя укладываются р "рамки" здравого смысла, то результаты действий сохраняются автоматически (как часто - решать тебе). Если пользователь со здравым смыслом не дружит, то ничего испортить ему не удастся. Конечно, возможность отката назад очень полезна, но не на сотни шагов. Если хочешь, чтобы проект нормально функционировал, ты должен быть его хозяином, а не неизвестно какой квалификации пользователь.
0
|
0 / 0 / 0
Регистрация: 05.03.2007
Сообщений: 23
|
||||||
13.04.2007, 21:42 | 14 | |||||
Разве такой код не подойдет?
0
|
0 / 0 / 0
Регистрация: 05.03.2007
Сообщений: 23
|
|
13.04.2007, 21:51 | 15 |
Можно и вручную поставить это свойство как через VBA так и через панель "Элементы управления"
0
|
0 / 0 / 0
Регистрация: 05.03.2007
Сообщений: 23
|
|
13.04.2007, 22:01 | 16 |
1. Многие пользователи продвинуты, и поэтому прятать от них то к чему они привыкли значит наживать себе врагов 2. Конечно данные должны контролироваться, но только ключевые т.е. по которым производится поиск, сбор данных и т.п. 3. Нужно предоставлять контроль над сохранением(но в определенных рамках), иначе вся ответственность ложиться на разработчика, а это черевато.
0
|
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 117
|
|
13.04.2007, 22:55 [ТС] | 17 |
Скорее всего эту проблему можно решить только 3 способами: 1. С использованием сертификата (минус - опытный пользователь может это обойти); 2. Возможно управлять через другую книгу (наверно??!!), но это сложный способ. 3. Задача решения не имеет.
0
|
4 / 4 / 2
Регистрация: 06.03.2011
Сообщений: 151
|
|
16.04.2007, 14:59 | 18 |
Повозражаю VKODORу.
по п. 1) Расчитывать на то, что с твоим детищем будут работать только "правильные" пользователи - наивно. По-настоящему грамотный пользователь вообще не будет прибегать к твоим услугам, а всё сделает сам. по п. 2) Я предпочитаю делить данные не по принципу ключевые - неключевые, а по принципу нужные - ненужные. Нужные всеми средствами защищаю, а ненужные к проекту не допускаю. по п. 3) Контроль над сохранением или есть (полный) или его нет (это когда упоминаются "определённые рамки"). А ответственность разработчика - это святое. И виноватым во всём всегда будет разработчик. При этом зависимость количества врагов от достоинств проекта неоднозначна и порой обескураживает. Делай всё по совести, не надейся на "продвинутого" пользователя и не бойся ответить за то, что сделал. Желаю успехов!
0
|
16.04.2007, 14:59 | |
16.04.2007, 14:59 | |
Помогаю со студенческими работами здесь
18
Процессы при открытии книги Ошибка при повторном открытии книги Показать форму при открытии книги Загрузка данных при открытии книги Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |