Note: The other languages of the website are Google-translated. Back to English

如何在Excel中禁用剪切,複製和粘貼功能?

假設您有一本工作簿,其中包含需要保護的重要數據,以防止其被剪切,複製和粘貼。 如何實現呢? 本文提供了一種VBA方法,供您在Excel工作簿中同時禁用剪切,複製和粘貼功能。

使用VBA代碼禁用剪切,複製和粘貼功能


使用VBA代碼禁用剪切,複製和粘貼功能

請執行以下操作以禁用Excel工作簿中的剪切,複製和粘貼功能。

1.在工作簿中,您需要禁用剪切,複製和粘貼功能,請按 其他 + F11 同時打開 Microsoft Visual Basic for Applications 窗口。

2。 在裡面 Microsoft Visual Basic for Applications 窗口,請雙擊 的ThisWorkbook 在左邊 專案 窗格,然後將以下VBA代碼複製並粘貼到 本工作簿(代碼) 窗口。 看截圖:

VBA代碼:在Excel中同時禁用剪切,複製和粘貼功能

Private Sub Workbook_Activate()
Application.CutCopyMode = False
Application.OnKey "^c", ""
Application.CellDragAndDrop = False
End Sub

Private Sub Workbook_Deactivate()
Application.CellDragAndDrop = True
Application.OnKey "^c"
Application.CutCopyMode = False
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.CutCopyMode = False
Application.OnKey "^c", ""
Application.CellDragAndDrop = False
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.CellDragAndDrop = True
Application.OnKey "^c"
Application.CutCopyMode = False
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.OnKey "^c", ""
Application.CellDragAndDrop = False
Application.CutCopyMode = False
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Application.CutCopyMode = False
End Sub

3.然後按 其他 + Q 退出鍵 Microsoft Visual Basic for Applications 窗口。

現在,您不能從該工作簿中剪切或複制數據,同時,您從其他工作表或工作簿中復制的數據也無法粘貼到該工作簿中。

備註:運行上述VBA代碼後,拖放功能也被禁用。


相關文章:


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (50)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
我按照上面的方法做,但是在我打開的任何 excel 文件中都禁用了剪切複製和過去的功能。為什麼?
網站主持人對此評論進行了最小化
嗨,我用它來向用戶隱藏“剪切”,除非您有一個表格,否則效果很好,當您在表格中選擇一個單元格時,“剪切”奇蹟般地重新出現,這正是我試圖避免的。 有任何想法嗎? 謝謝!
網站主持人對此評論進行了最小化
謝謝你先生它的工作。但在整個工作簿中。 如果我只需要這個代碼我特定的表。它可能嗎?
網站主持人對此評論進行了最小化
你找到答案了嗎?
網站主持人對此評論進行了最小化
非常感謝。它在整個工作簿中工作。 我們可以只為 1 張進行編碼嗎?請幫忙。
網站主持人對此評論進行了最小化
如何啟用剪切、複製和粘貼功能? 請指教!
網站主持人對此評論進行了最小化
親愛的天空
請運行以下 VBA1(將代碼放在 ThisWorkbook 模塊中)以禁用工作簿中的剪切、複製和粘貼功能。

VBA1:
子 DelCopy()
與應用程序
.OnKey "^x", ""
.OnKey "^c", ""
.CommandBars("Cell").Controls(1).Enabled = False
.CommandBars("Cell").Controls(2).Enabled = False
結束
END SUB

並運行 VBA2 以啟用所有這些功能回到您的工作簿。

VBA2:
子 RecoverCopy()
與應用程序
.OnKey "^x"
.OnKey "^c"
.CommandBars("Cell").Controls(1).Enabled = True
.CommandBars("Cell").Controls(2).Enabled = True
結束
END SUB
網站主持人對此評論進行了最小化
這似乎對我不起作用 - 我是否應該刪除原始 VBA 代碼,然後將上面的代碼粘貼到其中以再次啟用剪切、複製和粘貼功能?
網站主持人對此評論進行了最小化
美好的一天,
上面註釋中的 VBA1 是對原代碼的替換。
網站主持人對此評論進行了最小化
親,

我想在 Excel 2007 工作表中禁用剪切、複製、粘貼
你能分享這個的代碼嗎
網站主持人對此評論進行了最小化
美好的一天,
感謝您的評論。 我正在嘗試找出 Excel 2007 的解決方案。請耐心等待。
網站主持人對此評論進行了最小化
嗨,
是否可以僅禁用“CUT”? 但我仍然可以使用複制和粘貼?
網站主持人對此評論進行了最小化
嗨,卡梅洛,
請將以下代碼複製並粘貼到工作簿中的工作簿代碼窗口中,然後將其保存為啟用 Excel 宏的工作簿。 然後“剪切”功能將被禁用。

Option Explicit
Private WithEvents Cmbrs 作為 CommandBars

私人子工作簿_打開()
設置 Cmbrs = Application.CommandBars
END SUB

Private Sub Workbook_Activate()
如果 Application.CutCopyMode = 2 那麼
應用程序.CutCopyMode = 0
如果結束
END SUB

私有子 Cmbrs_OnUpdate()
如果我是 ActiveWorkbook 那麼
如果 Application.CutCopyMode = 2 那麼
應用程序.CutCopyMode = 0
MsgBox "剪切操作被禁用"
如果結束
如果結束
END SUB
網站主持人對此評論進行了最小化
我像你說的那樣嘗試了,但沒有任何反應。 一個想要的一模一樣,只有
“剪切”功能禁用。 我需要從右鍵單擊按鈕選項和工具欄中禁用“剪切”選項。
是水晶嗎??
網站主持人對此評論進行了最小化
美好的一天,
該代碼在我的情況下運行良好。 我可以知道你的Office版本嗎?
網站主持人對此評論進行了最小化
Hi

我是 VBA 代碼的初學者,這段代碼解決了我 99% 的問題。

是否可以鎖定孔板(如此代碼劑量)但仍有一個單元格解鎖?
(澄清一下,我想只允許在孔表中的一個單元格中復製過去的信息)。

最好的問候
L
網站主持人對此評論進行了最小化
你好琳達,
您可以在不使用 VBA 代碼的情況下解決問題。
右鍵單擊單元格並從上下文菜單中選擇格式化單元格,取消選中對話框中保護選項卡下的鎖定框。 然後用密碼保護工作表。
網站主持人對此評論進行了最小化
非常高興找到這篇文章,但我需要一些幫助才能將其限制為多工作表工作簿中的單個工作表。 並且需要知道如何在沒有用戶干預的情況下執行此操作……我們需要盡快在工作簿上執行此操作以幫助防止錯誤。
網站主持人對此評論進行了最小化
美好的一天,
以下 VBA 代碼可以幫助您解決問題。 並且不要忘記將代碼中的“Sheet2”替換為您的工作表名稱。

公共 mJWSName 作為字符串

私人子工作簿_打開()
mJWSName = "Sheet2"
END SUB

Private Sub Workbook_Activate()
如果 ActiveSheet.Name = mJWSName 則
Application.CutCopyMode = False
Application.OnKey "^c", ""
應用程序.CellDragAndDrop = False
如果結束
END SUB

私人子Workbook_Deactivate()
Application.OnKey "^c", ""
Application.CellDragAndDrop = True
Application.CutCopyMode = False
END SUB


Private Sub Workbook_WindowActivate(ByVal Wn As Window)
如果 ActiveSheet.Name = mJWSName 則
Application.CutCopyMode = False
Application.OnKey "^c", ""
應用程序.CellDragAndDrop = False
如果結束
END SUB

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.OnKey "^c"
Application.CellDragAndDrop = True
Application.CutCopyMode = False
END SUB

Private Sub Workbook_SheetSelectionChange(ByVal Sh 作為對象,ByVal 目標作為範圍)
在錯誤恢復下一頁
如果 Sh.Name = mJWSName 則
Application.CutCopyMode = False
如果結束
END SUB

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
在錯誤恢復下一頁
如果 Sh.Name = mJWSName 則
Application.OnKey "^c", ""
應用程序.CellDragAndDrop = False
Application.CutCopyMode = False
如果結束
END SUB

私人子工作簿_SheetDeactivate(ByVal Sh As Object)
Application.OnKey "^c"
Application.CellDragAndDrop = True
Application.CutCopyMode = False
END SUB
網站主持人對此評論進行了最小化
最後一個問題 - 這段代碼去哪里以及如何執行? 需要處理的項目將 XLA 文件附加到包含大量代碼的 Excel 工作表。 不知道這是否需要進入模塊或此表後面的代碼。 謝謝...
網站主持人對此評論進行了最小化
感謝您的指導。我在 Office 2013 中嘗試,但沒有任何改變。
網站主持人對此評論進行了最小化
嗨,代碼運行良好,謝謝。
但是,啟用了只讀選項。 (如果您不想修改)。 如果我設置..文件,另存為,工具,常規選項,只讀推薦..那麼代碼不起作用。

在此先感謝。
網站主持人對此評論進行了最小化
真的很好用,非常感謝。
網站主持人對此評論進行了最小化
謝謝它完美無缺......它只能以某種方式應用於一個範圍嗎?
網站主持人對此評論進行了最小化
美好的一天,
抱歉不能幫你。 歡迎在我們的論壇發表任何問題: https://www.extendoffice.com/forum.html. 感謝您的評論。
網站主持人對此評論進行了最小化
謝謝先生
網站主持人對此評論進行了最小化
謝謝,非常有用。
網站主持人對此評論進行了最小化
剪切複製粘貼適用於整個工作簿。 如果我只需要這個代碼我特定的表。它可能嗎?
請幫忙。 我們只需要一張禁用功能。 另一張我們正在處理所有功能的工作表...
網站主持人對此評論進行了最小化
該代碼在我的 excel 2016 中不適用於單個工作表而不是整個工作簿
網站主持人對此評論進行了最小化
這仍然允許從記事本或 Microsoft Edge 進行粘貼。 請查看是否有辦法防止從任何來源粘貼。
網站主持人對此評論進行了最小化
嗨,
如果阻止從任何來源粘貼,我們需要阻止記事本功能,這可能會帶來不便。 我們不建議這樣做。 抱歉不能幫你。
網站主持人對此評論進行了最小化
我使用了此代碼並想再次重新啟用? 如何重新啟用它?
網站主持人對此評論進行了最小化
使用此代碼禁用複制剪切和粘貼



Private Sub Workbook_Activate()

Application.CutCopyMode = False

Application.OnKey "^c", ""

應用程序.CellDragAndDrop = False

END SUB



私人子Workbook_Deactivate()

Application.CellDragAndDrop = True

Application.OnKey "^c"

Application.CutCopyMode = False

END SUB



Private Sub Workbook_WindowActivate(ByVal Wn As Window)

Application.CutCopyMode = False

Application.OnKey "^c", ""

應用程序.CellDragAndDrop = False

END SUB



Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)

Application.CellDragAndDrop = True

Application.OnKey "^c"

Application.CutCopyMode = False

END SUB



Private Sub Workbook_SheetSelectionChange(ByVal Sh 作為對象,ByVal 目標作為範圍)

Application.CutCopyMode = False

END SUB



Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Application.OnKey "^c", ""

應用程序.CellDragAndDrop = False

Application.CutCopyMode = False

END SUB



私人子工作簿_SheetDeactivate(ByVal Sh As Object)

Application.CutCopyMode = False

END SUB





並想再次啟用這些功能
網站主持人對此評論進行了最小化
這很好用,如何修改它以允許在具有下拉菜單的特定列中復制/粘貼到指定的可接受輸入範圍和僅可接受輸入。 例如,名稱 Jetson, George, 25 將允許複製/粘貼 Jetson, George, 25 但不允許 Jeston, George, 26。或者拖拽會導致 Jetson, George, 25 和 26 ,然後是 27 等。
在我的工作表中,我想完全禁用某些列中的剪切/複製/粘貼,然後只允許從下拉列表中剪切複製粘貼可接受的數據。
謝謝。
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護