Excel VBA工作薄 5.18 禁用宏功能就能阻止我的保护嘛?NO WAY!
前景提要
在我们学习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 = True
End 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.Save
End Sub
其实这里有两段代码,主要作用是用来检测是否启用了宏功能的
然后是第二段代码,这一段代码要写在thisworkbook里面
Private Sub Workbook_Open()
AskUserEnabledMacros
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
RunOnClose
End Sub
来看看效果,首先我们禁用我们的宏功能来测试下能否看到数据
我们已经设置了禁用宏,
打开文件之后,你看不到数据表,你只能看到一个检测窗口
如果你更改下设置,改成启用宏
现在数据就出来了。
赞 (0)