Q:在Excel中,如何禁止使用剪切、復(fù)制、粘貼功能,以避免他人破壞我的數(shù)據(jù)?
A:在Excel 2003中,常使用下面的代碼來禁用剪切、復(fù)制、粘貼等功能。
DimcmdBar As CommandBar
DimcbrCtl As CommandBarControl
SubDisableCutCopyPaste()
‘禁用快捷菜單中的命令
DoWithControl 21, False ‘剪切
DoWithControl 19, False ‘復(fù)制
DoWithControl 22, False ‘粘貼
DoWithControl 755, False ‘選擇性粘貼
‘快捷鍵命令
With Application
.OnKey “^c”, “”
.OnKey “^x”, “”
.OnKey “^v”, “”
.CellDragAndDrop = False
.OnDoubleClick = “test”
End With
EndSub
SubDoWithControl(iId As Integer, blnState As Boolean)
Dim cmbBar As CommandBar
Dim cmbCtl As CommandBarControl
On Error Resume Next
For Each cmbBar In Application.CommandBars
Set cmbCtl =cmbBar.FindControl(ID:=iId, Recursive:=True)
If Not cmbCtl Is Nothing ThencmbCtl.Enabled = blnState
Next cmbBar
EndSub
Subtest()
MsgBox “命令不可用!”
EndSub
然而,在Excel 2007及以后的版本中,上述代碼只能禁用快捷菜單和快捷方式的剪切、復(fù)制、粘貼等功能,在功能區(qū)中剪切、復(fù)制、粘貼仍然可以使用,快速訪問工具欄中的也可以使用。如下圖1所示。
圖3
注:當(dāng)在VBE或者其他應(yīng)用程序中進(jìn)行復(fù)制操作后,復(fù)制的數(shù)據(jù)會保存在剪貼板中,可以通過剪貼板在工作簿中粘貼這些數(shù)據(jù)。我想,可以使用DataObject對象來刪除剪貼板的內(nèi)容。