[问题] EXCEL VBA 会影响到其它EXCEL档案

楼主: Andy5566 (小妹56)   2020-08-05 09:28:08
最近在设计公司要用到的EXCEL出勤表
设计好整个EXCEL后,发现若是使用者随便复制其它字段到另一个字段贴上
原本的字段的格式化条件就会被修改到,导致显示异常
由于之后会有很多人使用,又难以要求每个人都能正确使用
所以开始研究VBA,从估狗找到一条可以禁止复制功能的VBA,也成功
但后来发现,一旦开启VBA,其它EXCEL也会无法使用复制的功能
甚至出勤表关闭后,其它EXCEL依然无法使用复制功能
原先以为是宏存放在的选项选到所有开启的活页簿
因此重新建立宏,将宏存放设定在出勤表的EXCEL中,但结果还是一样....Orz
怕到时推出来,造成其它人的EXCEL无法复制造成他们的困扰
想请问一下,可不可以限制VBA只在出勤表的EXCEL使用,而不干涉其它EXCEL档案?
又或是有什么EXCEL复制贴上功能只会单纯贴上值?
以下是EXCEL的宏
Sub disCopy()
Dim copyCtls As CommandBarControls
Dim copyCtl As CommandBarControl
Application.CutCopyMode = False
'寻找所有 [复制] 按钮, 其ID为19
Set copyCtls = Application.CommandBars.FindControls(ID:=19)
'将所有 [复制] 按钮功能取消
For Each copyCtl In copyCtls
copyCtl.Enabled = False
Next
'取消 [复制] 快捷键
Application.OnKey "^c", ""
'工作表标签右键所跳出来的 "ply" 工具列"移动或复制(M)..." 按钮可移动并产生
副本
'因此一并禁止
Application.CommandBars("ply").Controls(5).Enabled = False
'以上应该就无法复制了
End Sub
Sub enCopy()
Dim copyCtls As CommandBarControls
Dim copyCtl As CommandBarControl
'寻找所有 [复制] 按钮, 其ID为19
Set copyCtls = Application.CommandBars.FindControls(ID:=19)
'将所有 [复制] 按钮功能恢复
For Each copyCtl In copyCtls
copyCtl.Enabled = True
Next
'恢复 [复制] 快捷键
Application.OnKey "^c"
'恢复工作表标签右键所跳出来的 "ply" 工具列"移动或复制(M)..." 按钮功能
Application.CommandBars("ply").Controls(5).Enabled = True
'以上应该就可以复制了
End Sub
作者: soyoso (我是耀宗)   2020-08-05 10:16:00
触发事件workbook_activate,就discopy,workbook_deactivate就encopy

Links booklink

Contact Us: admin [ a t ] ucptt.com