利用VBA代码实现自动隐藏、显示指定Excel工作表
其实对付数据量不是非常大的日常工作,我们几乎每个人都在用的Excel就足够了。因此Excel成了我们日常办公的数据处理软件的首选,很多中小企业的销售、财务、库房管理等都在使用它来完成数据的处理。但是Excel 工作表在默认情况下是全部开放的,只要打开文件任何用户都可以任意操作。这时如果你既要共享Excel数据分析处理的结果,又不想让对方看见具体数据,如何保密就成了问题。
例如:利用单位月费用报销的明细数据制作了各部门报销费用的比较图,希望发给各部门查看但又不能让对方看到具体数据项。这就需要隐藏“原始数据”所在数据表,只显示“各部门报销费用比较图”所在的数据表。
下面就这个问题给出几种解决方法: 1 直接隐藏工作表
“右键单击指定工作表标签”→“隐藏”,这样重要的工作表就被隐藏起来了。虽然该方法简单易行,但是却存在一个致命弱点,他人只需右键单击任意工作表标签→“取消隐藏”,就会重现被隐藏的工作表。 2 隐藏工作表并保护工作簿
按照上面的方法将工作表隐藏,然后通过设置“保护工作簿→结构”(可以选择添加口令)。这样操作后被隐藏的工作表将
无法再显示,只能先取消“保护工作簿”才能取消隐藏。 但是这个方法也有缺点,就是当“保护工作簿→结构”时,对于工作表的其它操作也无法进行,比如:插入、删除、重命名等。
3.2 在“工程”面板中显示了该Excel文档的所有工作表。选择要隐藏的工作表,然后在“属性”面板中设置 “Visible”的参数为2-xlSheetVeryHidden。这样工作表就被隐藏了,而且此时“取消隐藏”功能显示为灰色不可用。
但是别人只要知道这个方法,要显示工作表时只要再修改属性中“Visible ”的参数为-1- xlSheetVisible就可以了。 注意:每个Excel文档中必须至少有一个工作表的 Visible 属性值为“1- xlSheetVisible”,即至少有一个工作表是显示的。
4 VBA代码实现
说明:这一系列操作会生成3个宏Hide、show、showall,它们对应的功能如下“隐藏指定工作表”、“显示指定工作表”、“显示全部工作表”。
这段代码会将“password”为名称的工作表中,A列第1-10行单元格内容视为要被隐藏的工作表名称,并将它们高级隐藏。 sub Hide()
For i = 1 To 10 '设定判断1-10行
a = Sheets(\把Password表i
行1列单元格内容放入变量a
If a \判断单元格为空,进入下个单元格 Worksheets(a).Visible = 2 '设定单元格中表名称工作表隐藏
Else '结束判断单元格为空 End If
Next '设定i加1进入下1行单元格 End Sub
这段代码会将“password”为名称的工作表中,A列第1-10行单元格内容视为要被显示的工作表名称,并将它们显示。 sub show() For i = 1 To 10
a = Sheets(\ If a \
Worksheets(a).Visible = -1 Else End If Next End Sub
这段代码会将文档中全部工作表显示 Sub ShowAll() Dim ws As Worksheet
For Each ws In Sheets ws.Visible = -1 Next ws End Sub
4.2 按下Ctrl+S保存文件→右键单击“模块1”→导出文件→指定文件名和路径保存为.bas文件。
4.4 在当前文档新建名称为“password”的工作表,然后将要隐藏的工作表名称填入password工作表中A列1-10行单元格。最后执行“Hide宏”,就可以实现工作表隐藏了。 注意:password工作表中A列1-10行单元格填写工作表名称一定要和当前Excel工作簿中表名称完全相同,否则会导致代码运行错误。
以上是几种隐藏工作表的方法,最后1种方法是使用起来最方便的。每次只需导入宏代码,然后建立“password工作表”,再在A1-A10单元格中填入要隐藏的工作表名称,最后执行相应的宏就完成了。