Установить пароль для открытия с помощью VBA вместо встроенной функции - PullRequest
0 голосов
/ 06 мая 2020

У меня есть предыдущий топик c о настройке пароля для другой книги. Другая книга называется «Sample.xlsm» Защищать закрытую книгу паролем

Теперь мне нужно заставить пользователя ввести пароль из самого Sample.xlsm и в то же время предотвратить пользователь не может изменить пароль

Я использовал это

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.DisplayAlerts = False
        If SaveAsUI Then MsgBox "SaveAs Feature Disabled", vbExclamation: Cancel = True
    Application.DisplayAlerts = True
End Sub

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

1 Ответ

2 голосов
/ 06 мая 2020

Для принудительного сохранения только в указанное c местоположение:

Это код, который должен остановить большинство попыток сохранения:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False
    Cancel = True
    Call MySaveCode
BackToExcelSave:
    Application.EnableEvents = True
End Sub

Затем вам нужно добавить код для вашего сохранить и избежать запуска процедуры сохранения по умолчанию в Excel:

Sub MySaveCode()

    On Error GoTo ReEnable ' Use On Error in case they cannot save to specified location/filename
    Application.EnableEvents = False ' turn off excel default action (Workbook_BeforeSave)
    Dim Path As String
    Dim FileName As String

    Path = "C:\Users\SeanC\Documents\Excel\"

    FileName = "MyFixedFilename.xlsm"

    Application.DisplayAlerts = False    'Optional. Suppresses default excel messages

    ThisWorkbook.SaveAs Filename:= _
            Path & FileName, _
            FileFormat:=xlOpenXMLWorkbookMacroEnabled, _
            CreateBackup:=False, _
            Password:="P@$$w0rd"

    MsgBox "Saved as: " & ThisWorkbook.FullName 'Also Optional

ReEnable:
     Application.DisplayAlerts = True    'Optional
     Application.EnableEvents = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...