在工作簿打开的Excel vba自动运行宏

时间:2014-11-30 11:57:43

标签: excel-vba autorun vba excel

我想要为所有用户自动运行Sub WorkSheet_Change(ByVal Target As Range)。问题是这些用户在输入数据时几乎不知道或懒得启用宏。有没有办法强制宏自动在这个工作簿上运行?我看过一篇关于名为Workbook_Open ()的事件的文章,但我不知道如何使用它。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

出于安全原因,您无法在没有用户明确输入的情况下强制工作簿启用宏。

您可以做的是设置用户需要隐藏的所有工作表。然后创建一个只有文本框的可见工作表或者说“#34;请启用宏以继续。”#34;然后使用Workbook_Open事件隐藏该工作表并取消隐藏其他工作表。

此外,当用户保存电子表格时,使用Workbook_BeforeSave事件重新隐藏工作表,因此每次都必须执行检查。

其他提示:使用VBA隐藏工作表时,请尝试使用xlSheetVeryHiddenxlSheetHidden。这意味着用户无法像普通的隐藏表那样将他们从excel中取消隐藏(因此您可以避免使用该漏洞的顽固用户)。

编辑:这里有一些示例代码,当然还有虚构的工作表名称:

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

Worksheets("Data1").Visible = xlSheetVisible
Worksheets("Data2").Visible = xlSheetVisible
Worksheets("Welcome").Visible = xlSheetVeryHidden

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Worksheets("Welcome").Visible = xlSheetVisible
Worksheets("Data1").Visible = xlSheetVeryHidden
Worksheets("Data2").Visible = xlSheetVeryHidden

End Sub

Private Sub Workbook_Open()

Worksheets("Data1").Visible = xlSheetVisible
Worksheets("Data2").Visible = xlSheetVisible
Worksheets("Welcome").Visible = xlSheetVeryHidden

End Sub