[問題] 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