问:在Excel中,如何禁止使用剪切、复制、粘贴功能,防止他人破坏我的数据?
答:在Excel 2003中,经常使用以下代码来禁用剪切、复制和粘贴功能。
作为命令栏
DimcbrCtl As CommandBarControl
SubDisableCutCopyPaste()
禁用快捷菜单中的命令。
控制21,假'切。
控制19,假的。
控制22,假粘贴。
用control 755做,false '粘贴特殊。
快捷键命令
带应用程序。在“^c”上。在“^x”上。在“^v”上。CellDragAndDrop=False。OnDoubleClick="test "
以…结尾
EndSub
子控件(整数形式,布尔值形式)
将cmbBar调暗为CommandBar
将cmbCtl调暗为CommandBarControl
出错时继续下一步
对于应用中的每个cmbBar。命令栏
设置cmbCtl=cmbBar。FindControl(ID:=iId,Recursive:=True)
如果不是cmbCtl什么都不是,那么cmbCtl。Enabled=blnState
下一个cmbBar
EndSub
子测试()
MsgBox“命令不可用!”
EndSub
但是,在Excel 2007及更高版本中,上述代码只能禁用快捷菜单和快捷方式的剪切、复制和粘贴等功能。功能区仍然可以使用剪切、复制和粘贴,快速访问工具栏中的也可以使用。如下图1所示。
图1
从图1可以看出,单元格快捷菜单中的剪切、复制、粘贴等功能命令都是灰显的,这意味着它们无法使用,但是功能区和快速访问工具栏中的命令仍然可用。
此时需要通过XML代码自定义功能区,实现禁用功能区的命令。关闭工作簿,使用自定义用户界面编辑器打开它,并输入如下图2所示的XML代码:
图2。
验证保存后,关闭自定义UI编辑器,重新打开工作簿,可以看到功能区和快速访问工具栏中的剪切、复制、粘贴等功能也是灰显的,如图3所示。
图3。
注意:在VBE或其他应用程序中复制后,复制的数据将保存在剪贴板中,剪贴板可以粘贴到工作簿中。我认为您可以使用DataObject对象来删除剪贴板的内容。