Excel VBA – 防止在date之后编辑并强制启用macros

所以我有一个工作簿,我想在某个date之后进行只读/保护。 我也想强制用户启用macros。 到目前为止,我有以下脚本,但尽pipe将其更改为只读,但似乎没有任何操作。 在那之后我也尝试在表单上启用保护,但是出现错误。 谁能帮我吗?

-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 

你不能强制macros运行,因为…那么根本没有任何安全的macros。 你可以做的是让你的用户添加你的文件夹作为一个可信任的networking位置

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

另外,你可以运行一个脚本来“归档”旧文件(把它们放在其他文件夹中),并用它们的PDF来代替原始文件。 PDF将是“只读”版本。