Excel VBA - 在日期和强制启用宏之后阻止编辑

时间:2014-04-07 17:56:12

标签: excel vba excel-vba

所以我有一个工作簿,我希望在某个日期之后变为只读/保护。我还想强制用户启用宏。到目前为止,我有以下脚本,但尽管将其更改为只读,它似乎没有做任何事情。我还试图在该日期之后在工作表上启用保护,但是我遇到了错误。任何人都可以帮助我吗?

-Eric

Private Const ExpirationDate As Date = #4/5/2099#

Private Sub Workbook_Open()
    ' Timebomb
    If CDate(Now) >= CDate(ExpirationDate) Then
        ThisWorkbook.ChangeFileAccess (xlReadOnly)
        ThisWorkbook.Worksheets("Sheet").Protect Password:="NoAccess", UserInterfaceOnly:=True
        ThisWorkbook.Protect Password:="NoAccess", UserInterfaceOnly := True
    End If

    ' Force Enable Macros
    ThisWorkbook.Worksheets("Sheet").Visible = xlSheetVisible
    Sheets("START").Visible = xlVeryHidden

    ThisWorkbook.Worksheets("Sheet").Activate
End Sub

' Force Enable Macros
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheets("START").Visible = xlSheetVisible
    ThisWorkbook.Worksheets("Sheet").Visible = xlVeryHidden
    ActiveWorkbook.Save
End Sub

1 个答案:

答案 0 :(得分:0)

您无法强制运行宏,因为......然后根本没有任何关于宏的安全性。您可以做的是让您的用户将您的文件夹添加为可信网络位置

Options > Trust Center > Trust Center Settings...>Trusted Locations
Allow Trusted Locations on my network
add New location...

或者,您可以运行一个脚本" archives"旧文件(将它们放在其他文件夹中)并制作它们的PDF代替原始文件。 PDF将是“只读”的#39;版本