限制Excel表中进行复制粘贴操作

限制复制粘贴操作
昨天写了篇关于VBA限制打印的文章,本意是为了保护数据不被他人打印,今天上善若水同学却给我提出了另外一个问题—-让excel中的数据保密,不能被复制粘贴呢?
我想了下有2个方案,一个是利用保护工作表实现,另一个当然就是我所说的利用VBA代码了。
第一种保护工作表方案实现起来比较简单(适合懒人)。
具体步骤:工具-保护–保护工作表–在“允许此工作表的所有用户进行”的下拉框中选择全部为不选中,保护工作表。搞定!此时不管你点哪里都不能进行数据区域选择!此时复制粘贴按钮是未禁止的,但是限制了数据区域,什么也干不了。操作简单就不再截图了~
第二种VBA代码。还是贴代码吧,具体原理都注释在上面了。
 
  1. Private Sub Workbook_Open()   
  2.     With Application   
  3.         '屏蔽常用工具栏剪切、复制、粘贴   
  4.         .CommandBars(3).Controls("剪切(&T)").Enabled = False   
  5.         .CommandBars(3).Controls("复制(&C)").Enabled = False   
  6.         .CommandBars(3).Controls("粘贴(&P)").Enabled = False   
  7.         '屏蔽单元格右键菜单中的剪切、复制、粘贴命令   
  8.         .CommandBars("Cell").Controls("剪切(&T)").Enabled = False   
  9.         .CommandBars("Cell").Controls("复制(&C)").Enabled = False   
  10.         .CommandBars("Cell").Controls("粘贴(&P)").Enabled = False   
  11.         '屏蔽编辑菜单中的剪切、复制、粘贴命令   
  12.         .CommandBars(1).Controls("编辑(&E)").Controls("剪切(&T)").Enabled = False   
  13.         .CommandBars(1).Controls("编辑(&E)").Controls("复制(&C)").Enabled = False   
  14.         .CommandBars(1).Controls("编辑(&E)").Controls("粘贴(&P)").Enabled = False   
  15.         '屏蔽键盘剪切、复制、粘贴键   
  16.         .OnKey "^x", ""  
  17.         .OnKey "^c", ""  
  18.         .OnKey "^v", ""  
  19.     End With   
  20. End Sub   
禁止复制粘贴
原理就是由EXCEL事件来触发VBA的运行禁用快捷键和鼠标右键菜单的复制、粘贴功能,这里选择OPEN是在工作簿打开时执行,此时复制、粘贴呈现非激活的灰色(上图),当然事件也有很多,如activate激活事件,具体选择随意。
我只想到了两种,如果大家有什么好的idea,可以给我留言,当然我也接受大家的Excel难题,我会帮助大家解决,尽我所能吧!我喜欢你们给我留难题和你们的思路!
在这里感谢上善若水同学的问题!
分享到: