Как отключить SaveAs в открытой книге, но НЕ отключить Save - PullRequest
0 голосов
/ 29 марта 2019

Я не могу найти какой-либо код, который ТОЛЬКО отключает функцию SaveAs без отключения Save.

Приведенный код очень эффективен при отключении SAVE и SAVE AS, но я хочу, чтобы пользователи могли сохранять данные, но НЕиметь возможность СОХРАНИТЬ, чтобы они не могли создать версию рабочей книги.(в этом случае копирование файла в файловом менеджере не является проблемой - проблема заключается только в saveas.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim xName As String
xName = "CancelBeforeSave"

If Not Evaluate("=ISREF('" & xName & "'!A1)") Then
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = xName & ""
    Sheets(xName & "").Move after:=Worksheets(Worksheets.Count)
    'To edit macros disable by changing to True
    'Need to open workbook first with macros disabled
    Sheets(xName & "").Visible = False
    Exit Sub
End If
    'To edit macros disable by changing to False
    'Need to open workbook first with macros disabled
    Cancel = True
End Sub

Я ожидаю, что рабочая книга при ее открытии не позволяет сохранять saveas, не затрагивая другие открытые рабочие книги.

Вместо того кода, который я предоставил, если бы мы могли просто включить функцию сохранения, это также было бы приемлемо.

1 Ответ

1 голос
/ 29 марта 2019

Просто проверьте, истинно ли SaveAsUI, и отмените сохранение.

Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI Then
        MsgBox "Save As is disabled", vbInformation
        Cancel = True
    End If
End Sub

В документации по событию Workbook.BeforeSave вы можете найти:

SaveAsUI
True, если диалоговое окно Сохранить как будет отображаться в связи с изменениями, которые необходимо сохранить в рабочей книге.

Обратите внимание, что это не функция безопасности.
Это запрещает пользователям использовать диалоговое окно «Сохранить как».Но с некоторым кодом VBA в любом другом листе Excel вы можете легко обмануть это.Все, что вы делаете, чтобы запретить реальное сохранение как , можно обойти.Это не будет функцией безопасности.Это просто для предотвращения сохранения как "случайно" .Любой, кто действительно хочет сделать сохранение как и знает, как его обмануть, все равно сможет это сделать.

...