Как заставить пользователя иметь дело с предупреждением безопасности при запуске Access 2007? - PullRequest
3 голосов
/ 05 декабря 2009

Когда пользователь запускает базу данных Access 2007 с макросами и vba, отображается предупреждение безопасности. Я хочу, чтобы пользователь имел дело с этим предупреждением, поэтому, если содержимое не включено, пользователь не сможет использовать базу данных.

Теперь я использую макрос с именем AutoExec (открывает форму, которая работает как меню), и этот макрос запускается до того, как пользователь справится с предупреждением безопасности. Но я хочу проверить, включен ли контент, а если нет, я покажу форму, информирующую пользователя о том, что он должен включить контент.

Так что я на самом деле спрашиваю, как мне это сделать:

  1. Если vba и макросы не включены -> показать форму "информация"
  2. Если vba и макросы включены -> показать форму "меню Пуск"

Ответы [ 6 ]

6 голосов
/ 13 декабря 2009

Хорошо, через некоторое время у меня есть решение. Спасибо за ответы, которые привели меня на правильный путь.

Эта статья от Microsoft очень полезна.

В макросе AutoExec у меня есть две строки:

Первая строка: Conditions: [CurrentProject].[IsTrusted]=False и затем я выбираю форму, которую я хочу открыть, и в данном случае это «информация о форме предупреждения безопасности»

Вторая строка: Conditions: [CurrentProject].[IsTrusted]=True и теперь откройте «форму меню пуск»

И это все!

1 голос
/ 16 января 2013

Просто чтобы добавить свое решение - я только что имел дело с этой проблемой.

По умолчанию в настройках базы данных установлено открытие с формой "notEnabled" В этой «не включенной» форме есть текст, рисунки или что-то еще, что позволяет пользователю узнать, что ему / ей нужно «включить содержимое».

В событии on load для этой формы просто поместите несколько VBA, чтобы открыть фактическую форму, которую вы хотите, чтобы пользователь представил, и закройте форму "notEnabled".

Таким образом, если пользователь открывает базу данных, не делая ее доверенной, включая контент, он застревает в форме, которая говорит ему, как это сделать. СКОРОЕ, насколько это доверено, событие загрузки формы запускается и перенаправляет пользователя на любую форму, с которой вы хотите, с включенным содержимым.

Если пользователь открывает базу данных и уже доверяет файлу, он не видит форму, сообщающую ему, что он должен быть доверенным.

1 голос
/ 05 декабря 2009

Возможно, вы захотите рассмотреть форму запуска («информация»). Это покажет без макросов.

Кроме того, вы можете запустить некоторый код запуска или макрос, который закрывает информационную форму и открывает основную форму («меню Пуск»), если макросы запрещены, это не будет выполняться. Тем не менее, я думаю, что вы можете получить неприглядное предупреждение.

EDIT

Установите интервал таймера, скажем, 100 и добавьте небольшой код в информационную форму:

Private Sub Form_Timer()
   DoCmd.Close acForm, "Information"
   DoCmd.OpenForm "start menu"    
End Sub
1 голос
/ 05 декабря 2009

Если контент отключен, вы не можете проверить, так как ваш код не может быть запущен ....

0 голосов
/ 05 мая 2013

Я не знаю, почему люди дают предложения, которые еще не были проверены. Мое решение простое:

Если: [CurrentProject]. [IsTrusted] = False RunMenuCommand: CloseDatabase

Else

Если: [CurrentProject]. [IsTrusted] = True RunCode: (здесь вы запускаете код или макрос, который вы хотели)

Это в основном закрывает базу данных, если появляются предупреждения безопасности. Если нет, то открывается просто отлично. Пользователь, который является администратором, должен будет снизить уровень безопасности макросов на компьютере того, кто хочет получить доступ к базе данных. Этот макрос, в отличие от других, на самом деле будет работать, потому что он соответствует тому, что хочет Access.

Добро пожаловать!

0 голосов
/ 07 декабря 2009

Вы можете избежать этого, установив для флага IsTrusted значение TRUE в макросе AutoExec. См. Переход существующих приложений Access на Access 2007 - найдите IsTrusted, чтобы получить объяснение того, как с ним обращаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...