2013-01-11 1132 views
0

我有一本工作簿,其中根据需要提供了几张纸。在这个工作簿中,我使用了宏并锁定了一些特定的单元格和列,我使用了不保护和保护选项。一切工作正常在我的机器上,但是当我把它作为SharedWorkBook它给我错误,尤其是ThisWorkBook.Sheets(“PSE”)。解除保护ThisWorkBook.Sheets(“PSE”)。保护声明。因此,我用ThisWorkBook.Sheets(“PSE”)。取消保护共享ThisWorkBook.Sheets(“PSE”)。ProtectSharing。即使现在,我也得到这些线路的错误。
VBA Excel-如何通过vba进行解除保护和保护


Sub SheetHider() 
ThisWorkbook.Sheets("SheetA").UnprotectSharing 
Cuser = ThisWorkbook.Sheets("SheetA").Range("A2").Value 

且误差
运行时错误 '438' 对象不支持此属性或方法。

我的要求: 1)我不得不使用宏,止动性,使我不得不使用撤消和保护报表,当我做它作为SharedWorkBook这些东西应该工作。
我一直在寻找许多网站这一个星期。至少给我一些替代方案来做到这一点。
任何帮助将不胜感激。谢谢

+1

您能列出错误/错误消息的性质以及发生错误的代码行吗?更多的代码也不会受到伤害。否则很难说什么。 –

+0

@JüriRuut你好,你可以看到我更新的编辑。 –

回答

3

UnprotectSharingProtectSharing都属于Workbook对象。所以你不能做你想做的事情。

您可以这样做ThisWorkbook.UnprotectSharingThisWorkbook.ProtectSharing但这只是为了保护共享工作簿设置而设计的,以便人们无法在没有密码的情况下将其删除。

其次,当共享工作簿时,您无法取消保护或保护工作表。您必须取消共享工作簿,取消保护工作表,然后再次共享工作簿。这不是很实际。

+0

哦,那么这对我的项目和我来说都将是一个非常大的问题。那么我怎么能限制用户编辑,而不是基于Environ(“用户名”)动态地编辑一些特定的单元格或列。请尽快回复我。 –

+0

嗨,尼克,让我更清楚地陈述我的要求。我的Excel有很多员工相关的数据。要求是当前用户应该只能编辑他的部门数据。同时多个用户将同时使用该工作表,因此他们需要共享工作簿。一切工作正常,直到我分享工作簿。有什么想法吗 ? –

+0

@SaiKiranMandhala你想做的事是不可能的共享工作簿。我很抱歉,我的回答不是你想听到的,而是它是什么。您需要使用不共享的工作簿,否则不需要保护。 –

0

在保护共享工作簿之前,您必须保护工作表,取消保护的顺序相反。

+0

其实我没有保护工作表,并解锁一些基于userroles的列后,我保护工作表。我没有得到你的答案,你能否给出答案。 –