VBScript可以在受保护的Excel工作表上运行吗?

时间:2012-12-31 18:24:52

标签: excel-vba vbscript protection wsh vba

我正在使用VBScript在同一工作簿上的不同工作表上进行大量计算。现在有一个问题是如果有人删除了任何表单,那么该脚本将导致大量数据丢失。有没有办法保护用户免受用户侵害?

2 个答案:

答案 0 :(得分:1)

(请务必阅读本答复末尾的编辑内容)

我有类似的工作簿,使用数据库等表格,所以我理解您对保护信息的关注。如果要保护工作簿,则会阻止宏对工作表/书籍执行某些更改。但是,如果您只想保护工作表内容,可以使用UserInterfaceOnly设置,这将允许您的宏自由运行,同时仍然保护工作表不受用户的影响。您可以在打开时检测纸张是否受到保护,如果没有,请保护它们。

Sub test()

dim mySheet as worksheet
dim myPass as string

myPass = "password"
set mySheet = Excel.ActiveSheet
if mySheet.ProtectContents = False then
   mySheet.Protect Password:=myPass, UserInterfaceOnly:=True
end if

'Enter your code here

mySheet.Unprotect Password:=myPass

End Sub

此外,如果您希望在发出警告后让用户能够取消保护工作表,则可以使用“自定义UI编辑器”从“审阅”选项卡中删除保护/取消保护工作表组,然后将其替换为自定义按钮。我过去做过这个,实际上它对以后维护纸张有很大帮助。我在下面的自定义UI编辑器中包含了几个链接。

编辑:

乍一看,我认为这个问题与VBA(我的坏)有关。我相信上面的代码仍然适用,只需将代码放在代码中并正确设置工作簿和工作表变量(而不是上面设置的方式)。如果您还不知道如何设置/引用工作簿/工作表对象,this forum post会说明如何设置/引用。虽然我通常不使用VBscript,但论坛看起来是正确的。祝你好运!

答案 1 :(得分:0)

这是几年前的事情,但是当我寻找答案时我遇到了它,希望有人对此有所帮助。

首先在工作簿中添加一个密码,使其他用户只能以只读方式打开。

http://www.k2e.com/tech-update/tips/728-tips-adding-a-password-to-make-an-excel-workbook-read-only

然后在打开excel文件时将其作为vbscript的一部分

Set oExcel = CreateObject("Excel.Application")
Set oWorkbook = oExcel.Workbooks.Open(file.path,,,,"password","password",True,,True,True)

完整的开关列表可以在这里找到: http://msdn.microsoft.com/en-us/library/office/ff194819%28v=office.15%29.aspx

希望有所帮助,花了我几个小时才想出来。