[VBA] 如何 利用 Excel 4.0 巨集表 不啟用巨集則關閉活頁簿
在Excel安全性中,若使用者不啟用巨集,可能會導致開發者的所設計的一些功能無法執行,故要求使用者啟用巨集。(若是使用增益集,就不需要"啟用巨集",改天再來寫)
設"中"會出現以下訊息。
設"低"不會出現訊息,直接啟用巨集。
設"高"就直接停用巨集。
以下就介紹如何達成此功能
1.利用Excel 4.0巨集表來定義巨集函數。在工作表工具列按右鍵→插入→Excel 4.0 巨集表
輸入以下內容
=ERROR(FALSE) |
=IF(ERROR.TYPE(RUN("TestMacro"))=4) |
=ALERT("因停用了巨集功能,檔案將被關閉!",3) |
=FILE.CLOSE(FALSE) |
=END.IF() |
=RETURN() |
2.在VBAProject新增一個Module,鍵入以下內容
Option Explicit
'為每個表定義隱藏名稱
Sub AddPrivateNames()
Dim sht As Worksheet
'列舉
For Each sht In Worksheets
'為每一個工作表指定"巨集表位置"
ThisWorkbook.Names.Add sht.Name & "!Auto_Activate", "=Macro1!$A$1", False
Next
End Sub
Sub HideMacroSheet()
'隱藏巨集表
ThisWorkbook.Excel4MacroSheets(1).Visible = xlSheetHidden
End Sub
3.在Workbook的open事件呼叫HideMacroSheet、AddPrivateNames方法
Option Explicit
Private Sub Workbook_Open()
HideMacroSheet
AddPrivateNames
End Sub
4.完成後就存檔、關閉,然後再開一次剛剛儲存的檔案,記得至少要執行過一次巨集讓剛剛設定的程式生效,然後再存一次檔。
5.爾後使用者只要不啟用巨集,活頁簿就會被關掉。
6.此功能只有在Excel 2003測試成功
7.範例下載:若不啟用巨集則關閉活頁簿.rar
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET