分享

Excel VBA工作薄 5.18 禁用宏功能就能阻止我的保护嘛?NO WAY!

 Excel和VBA 2021-03-31

前景提要

在我们学习VBA保护数据工作薄的过程中,大家一定有不少的疑问,因为很多人都说,依靠工作薄的宏文件来保护数据是非常的不合理的,因为宏这个功能是能够被禁用的,确实是这样,现在很多的电脑都已经默认禁用了宏功能,导致很多的童鞋在最初接触VBA的时候会发现自己的电脑完全没有VBA的模块,就是因为宏被禁用的缘故,那么既然宏能够被禁用,那么是不是我们之前学习的保护工作薄的方式也会被禁用呢?不是的,我们可以设置在禁用宏的情况下,工作薄的内容是不可见的。

场景模拟

今天好像没有什么场景模拟的必要了,直接上代码吧

代码区

第一步,我们需要创建一个sheet,为了后续代码的方面,我们就叫他检测吧,检测电脑是否打开了宏,可以是一个空白的sheet

我们的关键数据在sheet1这个工作薄中

第一段代码

Sub openss() Dim wksInfoSheet As Worksheet Dim objSheet As Object On Error Resume Next Set wksInfoSheet = ThisWorkbook.Worksheets("检测") If wksInfoSheet Is Nothing Then MsgBox "不能够找到<检测>工作表", vbCritical Exit Sub End If Application.ScreenUpdating = False For Each objSheet In ThisWorkbook.Sheets objSheet.Visible = xlSheetVisible Next objSheet wksInfoSheet.Visible = xlSheetVeryHidden ThisWorkbook.Saved = True Application.ScreenUpdating = TrueEnd Sub
Sub closess() Dim wksInfoSheet As Worksheet Dim objSheet As Object On Error Resume Next Set wksInfoSheet = ThisWorkbook.Worksheets("检测") If wksInfoSheet Is Nothing Then MsgBox "不能够找到<检测>工作表", vbCritical Exit Sub End If Application.ScreenUpdating = False wksInfoSheet.Visible = xlSheetVisible For Each objSheet In ThisWorkbook.Sheets If Not objSheet Is wksInfoSheet Then objSheet.Visible = xlSheetVeryHidden End If Next objSheet ThisWorkbook.SaveEnd Sub

其实这里有两段代码,主要作用是用来检测是否启用了宏功能的

然后是第二段代码,这一段代码要写在thisworkbook里面

Private Sub Workbook_Open() AskUserEnabledMacrosEnd SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean) RunOnCloseEnd Sub

来看看效果,首先我们禁用我们的宏功能来测试下能否看到数据

我们已经设置了禁用宏,

打开文件之后,你看不到数据表,你只能看到一个检测窗口

如果你更改下设置,改成启用宏

现在数据就出来了。 

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多