我正在使用 VBScript 在同一工作簿的不同工作表上进行大量计算。现在一个问题是,如果有人以某种方式删除了任何工作表,那么该脚本将导致大量数据丢失。有什么方法可以保护它免受用户的侵害吗?
2 回答
(确保您阅读了此答案末尾的编辑)
我制作了类似的工作簿,使用数据库等工作表,所以我理解您对保护信息的担忧。如果您正在保护工作簿,它将阻止您的宏对工作表/书籍执行某些更改。但是,如果您只想保护工作表内容,则可以使用设置 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(我的错)有关。我相信上面的代码仍然可以应用,只需将代码放在标签中并正确设置工作簿和工作表变量(而不是上面设置的方式)。如果您还不知道如何设置/引用您的工作簿/工作表对象,此论坛帖子将展示如何设置/引用您的工作簿/工作表对象。虽然我通常不使用 VBscript,但论坛看起来是正确的。祝你好运!
我nw这是几年前的事了,但是我在寻找答案时遇到了它,希望有人对此有所帮助。
首先向您的工作簿添加密码,这样其他用户只能以只读方式打开。
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
希望对您有所帮助,我花了几个小时才弄清楚这一点。