2015-11-02 382 views
1

殘疾人複製粘貼正在與下面的代碼:禁止複製/粘貼在Excel

Option Explicit 
Sub ToggleCutCopyAndPaste(Allow As Boolean) 
    Call EnableMenuItem(21, Allow) 
    Call EnableMenuItem(19, Allow) 
    Call EnableMenuItem(22, Allow) 
    Call EnableMenuItem(755, Allow) 
    Application.CellDragAndDrop = Allow 
    With Application 
     Select Case Allow 
      Case Is = False 
       .OnKey "^c", "CutCopyPasteDisabled" 
       .OnKey "^v", "CutCopyPasteDisabled" 
       .OnKey "^x", "CutCopyPasteDisabled" 
       .OnKey "+{DEL}", "CutCopyPasteDisabled" 
       .OnKey "^{INSERT}", "CutCopyPasteDisabled" 
      Case Is = True 
       .OnKey "^c" 
       .OnKey "^v" 
       .OnKey "^x" 
       .OnKey "+{DEL}" 
       .OnKey "^{INSERT}" 
      End Select 
    End With 
End Sub 
Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean) 
    Dim cBar As CommandBar 
    Dim cBarCtrl As CommandBarControl 
    For Each cBar In Application.CommandBars 
     If cBar.Name <> "Clipboard" Then 
      Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True) 
      If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled 
     End If 
    Next 
End Sub 
Sub CutCopyPasteDisabled() 
    MsgBox "Sorry! Cutting, copying and pasting have been disabled in this workbook!" 
End Sub 

但是當我雙擊進入一個單元格,然後我可以做任何事情有剪切,複製和粘貼。

如何禁用複製粘貼,甚至雙擊到單元格?

+0

請,不要!複製粘貼是最支持的用戶操作。而且你可能不會阻止它 –

+0

幾乎總是有黑客的方式來提取文本 –

+0

是的,但我需要一段時間故意。上面的代碼正在工作。只有使用雙擊時我無法防止。通常它的顯示只有在雙擊單元格後纔會失效。 – user3766722

回答

0

您可以Worksheet.Protect保護您的工作表,例如:

Sheets("Sheet1").Protect "Password" 

現在,用戶無法選擇,也沒有在細胞變化值。 您也可以鎖定單元格manually

您還可以Unprotect工作表:

Sheets("Sheet1").Unprotect "Password" 

這一點,你需要改變你的工作表(也可通過VBA)之前做。

編輯1:我不知道如何讓用戶仍然編輯單元格,但不能複製粘貼它們的值。另一個「解決方案」可能是讓用戶通過表單輸入數據。作爲一個例子,我增加了一個按鈕到片:

add excel button

(注:如果你不能看到開發工具選項卡,you will have to add it)現在,你將被要求分配給它的宏,選擇新的。現在,您可以填寫分配給按鈕用下面的代碼子(宏):

Sub Button1_Click() 
Sheets("Sheet1").Unprotect "Password" 
Sheets("Sheet1").Range("A1") = InputBox("New value") 
Sheets("Sheet1").Protect "Password" 
End Sub 

現在,用戶只能夠更改該單元格的值,在這個例子中A1。

+0

@aglod,感謝您的回覆。我的要求是用戶可以編輯和添加任何文本到任何單元格。我只想禁用複製粘貼。用戶無法複製,粘貼到工作表中。 – user3766722

+0

看到我編輯的答案。 – agold

+0

對不起,我不明白。你可以添加任何示例工作表? – user3766722

0

這可能有幫助嗎?

輸入這個放在ThisWorkbook(代碼)頁

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 
    Cancel = True 
    MsgBox "Double click disabled!" 
End Sub 

https://i.stack.imgur.com/WSraj.jpg

+1

當用戶在Excel應用程序中限制或取消VBA時 - 是否不會被忽略? – userfuser