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

如何在Excel中禁用剪切,复制和粘贴功能?

假设您有一本包含重要数据的工作簿,需要保护这些重要数据以免被剪切,复制和粘贴。 如何实现呢? 本文提供了一种VBA方法,供您在Excel工作簿中同时禁用剪切,复制和粘贴功能。

使用VBA代码禁用剪切,复制和粘贴功能


使用VBA代码禁用剪切,复制和粘贴功能

请执行以下操作以禁用Excel工作簿中的剪切,复制和粘贴功能。

1.在工作簿中,您需要禁用剪切,复制和粘贴功能,请按 其他 + F11 同时打开 Microsoft Visual Basic应用程序 窗口。

2。 在里面 Microsoft Visual Basic应用程序 窗口,请双击 的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应用程序 窗口。

现在,您不能从该工作簿中剪切或复制数据,同时,您从其他工作表或工作簿中复制的数据也无法粘贴到该工作簿中。

备注:运行上述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 宏的工作簿。 然后“剪切”功能将被禁用。

选项显式
Private WithEvents Cmbrs 作为 CommandBars

私有子 Workbook_Open()
设置 Cmbrs = Application.CommandBars
END 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 作为字符串

私有子 Workbook_Open()
mJWSName = "Sheet2"
END 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 进行粘贴。 请查看是否有办法防止从任何来源粘贴。
该评论由网站上的主持人最小化
嗨,
如果阻止从任何来源粘贴,我们需要阻止记事本功能,这可能会带来不便。 我们不建议这样做。 抱歉不能帮你。
该评论由网站上的主持人最小化
我使用了此代码并想再次重新启用? 如何重新启用它?
该评论由网站上的主持人最小化
使用此代码禁用复制剪切和粘贴



私人子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保护