VBA并正确处理宏安全级别

时间:2014-04-07 11:47:08

标签: excel vba excel-vba

问:除非用户更改宏安全设置,否则建议用户注意功能丢失的方法是什么?

我现在做的事情:

我在打开工作簿后看到第一张工作表用户看到的警告,并解释为什么除非设置了适当的设置,WONT才能正常工作。

我在启动时隐藏它。 (除非设置正常,否则不会发生这种情况)

但它不是完美的解决方案:

  • 那条消息只是一次。 (虽然用户可以使用不同的设置将该表发送给其他人...)
  • 隐藏和显示这几行是由Excel修改为更改文档。 (因此只需打开和关闭excel就会生成Save changed警告!)

1 个答案:

答案 0 :(得分:0)

好的,这是我能想到的最佳答案 (并建议@brettdj做大事!)

Sub HideMacroSecWarning()
    Status = ThisWorkbook.Saved
    Help.Range("Warning").rows.hidden = True
    ThisWorkbook.Saved = Status
End Sub

Sub ShowMacroSecWarning()
    Status = ThisWorkbook.Saved
    Help.Range("Warning").rows.hidden = False
    ThisWorkbook.Saved = Status
End Sub

这些用于显示和隐藏宏。保存已保存的状态,因此只有用户操作才能触发“未保存的更改”对话框。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call ShowMacroSecWarning
End Sub

Private Sub Workbook_Open()
    Call HideMacroSecWarning
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Call ShowMacroSecWarning
End Sub

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
    Call HideMacroSecWarning
End Sub

这些确保无论用户设置状态如何,警告都将始终显示在SAVED FILE中。 (因此,即使用户Exel没有显示该警告,其他将在不同机器上打开它的人也会看到该警告。)