Изменить защиту рабочей книги в зависимости от места сохранения / имени файла - PullRequest
0 голосов
/ 13 июня 2018

У меня есть рабочая книга, которую я пометил как окончательную, но я хочу, чтобы пользователи могли сделать копию, для которой не является окончательной .Однако я не могу понять, как это сделать.

Я думал поместить следующий код в ThisWorkbook -модуле рабочей книги, но я колеблюсь, поскольку без сохранения рабочей книги снова внесенные измененияне прилипнет, и если я добавлю туда ThisWorkbook.Save, то рабочая книга будет сохранена дважды (по крайней мере, я думаю, мне придется отключить события перед повторным сохранением?) каждый раз, когда пользователь сохраняет рабочую книгу.

Option Explicit

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
    If ThisWorkbook.FullName = "<full name of the original>" Then
        ThisWorkbook.Final = True
    Else
        ThisWorkbook.Final = False
    End If
End Sub

У вас, ребята, есть предложения по более элегантному решению?

1 Ответ

0 голосов
/ 13 июня 2018

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

Option Explicit

Public Function IsAWorkbookFinal() As Boolean

    Dim wb As ThisWorkbook
    Set wb = ThisWorkbook

    Dim final_wb As String
    final_wb = "C:\test\final\test_wb_save.xlsm" 'adapt with fullname of final workbook

        If wb.FullName = final_wb Then
            IsAWorkbookFinal = True
        Else
            IsAWorkbookFinal = False
        End If

End Function
...