我正在使用VBScript在同一工作簿上的不同工作表上进行大量计算。现在有一个问题是如果有人删除了任何表单,那么该脚本将导致大量数据丢失。有没有办法保护用户免受用户侵害?
答案 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
希望有所帮助,花了我几个小时才想出来。