我正在尝试在本地网络上共享工作簿,工作簿受到保护,只能通过宏和用户表单进行编辑。当它不共享时,它可以很好地工作,每个宏都不保护工作簿进行编辑,然后重新保护工作簿。但是,当共享工作簿时,它会出现此错误,并且不会让代码运行。
对象'_Worksheet'的方法'取消保护'失败
有没有办法让这个只受宏编辑的受保护工作簿?另一个棘手的问题是,有些纸张允许选择单元格而不进行编辑,而其他纸张的单元格是不可选择的,我需要保持这种状态。任何帮助都会很棒,请提前感谢您的帮助!
答案 0 :(得分:1)
您的代码可以在启用工作簿共享时在共享工作簿中使用任何 可用 功能,并且可以使用工作簿中受保护工作簿中可用的任何功能保护模式已开启。
请注意,在共享时无法查看工作簿的代码,但您仍可以运行宏。
共享工作簿和“保护工作簿”是一些单独的功能,它们都限制了当前工作簿中可以执行的操作,并且在执行这些功能可能阻止的操作之前,您的代码需要关闭每个操作。
以下所有内容都是工作簿对象的属性或方法。
工作簿保护:
Protect(Optional password)
是一种可以打开工作簿保护的方法,如Ribbon命令Review |保护工作簿。
Unprotect(Optional password)
是一种关闭工作簿保护的方法,如Ribbon命令Review |取消保护工作簿。如果使用密码启用了工作簿保护,则需要password
参数。
分享工作簿功能:
MultiUserEditing
是一个只读布尔属性,用于指示“共享工作簿”功能当前是否已启用。
ExclusiveAccess()
是一种不带参数并禁用“共享工作簿”功能的方法。这样做的副作用是阻止共享工作簿中的其他活动用户将其更改保存到原始文件。
“共享工作簿”功能没有自己的方法,而是使用工作簿的SaveAs
方法和参数AccessMode:=xlShared
将其打开(这需要保存工作簿)。
如果不够复杂,那么另一个保护功能适用于“共享工作簿”功能。
保护共享工作簿功能:
ProtectSharing(optional SharingPassword)
是一种启用共享保护的方法,如功能区命令Review |保护共享工作簿。启用此功能后,无法关闭“共享工作簿”功能(即必须先关闭此保护功能)。使用此方法还将打开“共享工作簿”功能(如果尚未打开)。
Unprotect Sharing(optional SharingPassword)
是一种关闭共享保护的方法(允许随后禁用“共享工作簿”功能)。如果使用密码启用了“保护共享工作簿”,则需要SharingPassword
参数。
<强>读:强>
我尽量保持这个尽可能简单(信不信由你)。我强烈建议您阅读有关workbook object和share workbook功能的成员,并进行大量测试,因为需要学习很多细微差别。