作者Andy5566 (小妹56)
看板Office
标题[问题] EXCEL VBA 会影响到其它EXCEL档案
时间Wed Aug 5 09:28:08 2020
最近在设计公司要用到的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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.194.41.178 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1596590891.A.267.html
1F:→ soyoso: 触发事件workbook_activate,就discopy,workbook_ 08/05 10:16
2F:→ soyoso: deactivate就encopy 08/05 10:16