vba高手:在宏安全等级高的情况下,宏无法运行,为了保护工作表数据安全

vba高手:在宏安全等级高的情况下,宏无法运行,为了保护工作表数据安全,我想当宏无法运行的时候就关闭工作表,应该怎么做/... vba高手:在宏安全等级高的情况下,宏无法运行,为了保护工作表数据安全,我想当宏无法运行的时候就关闭工作表,应该怎么做/ 展开
 我来答
流云行水bd
2013-03-10 · TA获得超过262个赞
知道小有建树答主
回答量:705
采纳率:0%
帮助的人:297万
展开全部
当安全级别高的话宏无法运行,但此时会进入EXCEL并打开表,只是无法运行宏,此时要自动关闭工作表是不可能的,因为只有运行宏才能退出,而此时宏是不能运行的,而且excel好像也没有这种设置。

但是,我觉得有一个变通的办法,你参考一下:
在ThisWorkBook的BeforeClose事件中这样处理:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheet1.Visible = xlSheetVeryHidden
Sheet2.Visible = xlSheetVeryHidden
.....
End Sub

把你想要保护的表用.Visible = xlSheetVeryHidden隐藏起来,注意是VeryHidden,即使在表格菜单中是无法回复可见的,必须得通过宏才能设置
然后在表格的启动事件中将表格回复显示就行了,
Sheet1.Visible = xlSheetVisible
Sheet2.Visible = xlSheetVisible

这样,当不能运行宏的时候,被隐藏的表是无法看到的,就达到了保护的目的。
香格里拉稻草人
2013-03-10 · TA获得超过385个赞
知道小有建树答主
回答量:494
采纳率:66%
帮助的人:381万
展开全部
给你个思路
1 用 Set WSH = CreateObject("Wscript.Shell") 创建对象并检测有关注册表中"\Excel\Security\VBAWarnings"或者"\Excel\Security\AccessVBOM"的键值
2 键值1-4分别对应:低,中,高,非常高
3 如果键值>2时 ThisWorkbook.Close False
如编写程序时还有困难请扣二二五二八零九二三八

再说的清楚一点就是EXCEL宏设置为高后打开工作簿直接运行宏是不可能的,只能借助批处理文件重新打开工作簿并绕开EXCEL宏设置为高的限制,这样就可以直接运行宏了。
操作步骤是如下:
1 编写程序存储为批处理文件,可以保存在任何文件夹内。
2 打开工作簿遇到EXCEL宏设置为高的限制时,在不关闭工作簿的情况下打开存放批处理文件的文件夹,双击批处理文件(如果把批处理文件存放在桌面是最方便的),这样就由批处理文件绕开EXCEL宏设置为高的限制后重新打开了工作簿。当然也可以由批处理文件来关闭工作簿。
3 这个时候EXCEL的宏设置虽然还是为高,但工作簿内的所有宏就可以照常使用了。这就是不管EXCEL的宏设置情况是高还是低而直接运行宏的比较实用的方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
thirtyname
2013-03-25 · TA获得超过107个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:125万
展开全部
个人个人认为无法从VBA着手,来解决你的问题,因为前提条件是你的VBA根本无法运行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式