Как включить настройку макроса в центре доверия с кодом - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть опция открытия макроса в книге, чтобы проверить, авторизован ли пользователь для доступа к файлу.Однако, если настройка макроса в центре доверия для пользователя отключена с уведомлением (которое является настройкой по умолчанию), он может получить доступ к файлу.Что мне нужно сделать, чтобы включить выполнение кода независимо от настройки макроса?После закрытия я хочу сбросить настройку на значение по умолчанию.

Я не смог найти никакого хорошего решения, кроме включения настройки макроса для каждого пользователя.

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

Иметь один вступительный лист (назовем его «Макросы») с сообщением о том, что для продолжения необходимо включить макросы.Сделайте этот лист видимым, а все остальные очень скрытыми.

В модуле ThisWorkbook включите следующие две подпрограммы:

Private Sub Workbook_Open()
    Call MacrosOK ' Will only be called if macros are indeed OK.
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ' Ensures that the macro sheet is always set to the default view when the workbook is saved
    Application.ScreenUpdating = False
    Sheets("Macros").Visible = True ' Make the macro warning sheet visible
    Dim sht As Worksheet
    Application.ScreenUpdating = False
    For Each sht In ThisWorkbook.Worksheets
        If Not sht.Name = "Macros" Then sht.Visible = xlVeryHidden ' Hide all other sheets
    Next sht
    Application.ScreenUpdating = True
End Sub

Затем в обычный модуль:

Sub MacrosOK()
    ' Called on open, or otherwise when macros are enabled
    Dim sht As Worksheet
    Application.ScreenUpdating = False
    For Each sht In ThisWorkbook.Worksheets
        sht.Visible = xlSheetVisible ' Make all sheets visible
    Next sht
    Sheets("Macros").Visible = xlVeryHidden ' Hide your macro check sheet
    Application.ScreenUpdating = True
End Sub

Возможно, вы захотите добавить на лист макроса кнопку с надписью «Продолжить» (или что-то подобное), которая связана с сабвуфером MacrosOK, чтобы позволить пользователю продолжить работу вручную, если она не запускается автоматически.

2 голосов
/ 10 апреля 2019

Создайте рабочий лист, на котором есть сообщение «Пользователь не авторизован».

В событии Workbook_BeforeSave вы делаете этот рабочий лист видимым, а все другие листы очень скрытыми.

В событиях Workbook_AfterSave и Workbook_Open вы проверяете, авторизован ли пользователь.Если это так, то вы делаете обычные рабочие листы видимыми и делаете рабочий лист «Пользователь не авторизованным» очень скрытным.

Убедитесь, что ваш проект VBA защищен.Затем, если пользователь открывает рабочую книгу с отключенными макросами, все, что он сможет увидеть, это сообщение «Пользователь не авторизован».(Вы также можете добавить строку, например: «Если вы считаете, что получаете это сообщение по ошибке, убедитесь, что для этой книги включены макросы»)

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