Excel禁用直接粘贴功能 1 推荐有时我们做的Excel表格模板需要别人来填写,但是经常会发现别人填的时候会直接从别处复制数据直接粘贴进我们的表格模板,结果破坏了我们预先设好的格式,这不仅会在外观上变得难看,更重要的是使得一些数据变得莫明其妙,如不可以计算等等。 我们当然知道别人复制数据是为了避免手动输入的麻烦,但是很多填表格的人并不知道或者懒得用“选择性粘贴/粘贴值”这个功能。为了防止别人破坏我们预先设好的格式,我们可以利用VBA来禁用Excel的直接粘贴功能,只保留选择性粘贴。 我搜索了很多文章,总结了一个简单明白相对全面的方法,以下方法达到如下功能: 1. 禁用主菜单栏里的“粘贴”菜单; 2. 禁用右键弹出菜单的“粘贴”菜单; 3. 将“Ctrl+v”的行为改成了“选择性粘贴/只粘贴值”。 VBA代码如下: 在VBA编辑器的ThisWorkbook里,输入如下代码: Private Sub Workbook_Open() DisablePasteMenu DisablePastePopUp DisableCtrlV End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) EnablePasteMenu EnablePastePopUp EnableCtrlV End Sub ' ' 禁用主菜单栏中的粘贴功能 ' Public Sub DisablePasteMenu() Application.CommandBars(1).Controls(2).Controls(6).Enabled = False End Sub ' ' 启用主菜单栏中的粘贴功能 ' Public Sub EnablePasteMenu() Application.CommandBars(1).Controls(2).Controls(6).Enabled = False End Sub ' ' 禁用右键菜单中的粘贴功能 ' Public Sub DisablePastePopUp() Application.CommandBars("cell").Controls(3).Enabled = False End Sub ' ' 恢复右键菜单中的粘贴功能 ' Public Sub EnablePastePopUp() Application.CommandBars("cell").Controls(3).Enabled = True End Sub ' ' 禁用Ctrl + v功能 ' Public Sub DisableCtrlV() Application. "^v", "onCtrlV" End Sub ' ' 启用Ctrl + v功能 ' Public Sub EnableCtrlV() Application. "^v" End Sub 然后插入一个“模块”,在其中输入: Public Sub onCtrlV() Selection.PasteSpecial Paste:=xlPastes, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub 保存,OK。
发表于 @
2008年07月08日 16:48:00 | | 编辑|
举报| 收藏