Excel Sheet不見是實務中常見需求,可能基於資料保密或避免更改,本文先介紹最簡單的Excel如何操作,再說明如何用VBA的Visible及xlSheetVeryHidden屬性,2種方法徹底隱藏工作表。
目錄
Toggle一、Excel工作表重新命名
工作表索引標籤上滑鼠右鍵就可以「重新命名」工作表,這個是很熟悉的Excel操作。
二、屬性視窗
「Alt+F11」進入VBA編輯環境,準備用VBA方式設定工作表名稱。
首先通常預設在編輯環境可以看到屬性視窗。如果沒有的話,可以在上方功能列的「檢視」選擇「屬性視窗」,快速鍵是「F4」。
三、工作表名稱屬性
VBA編輯器的左上方「專案-VBA Project」可看到基本的Excel對象結構,一個專案大致上是一個Excel檔案,裡面有「Microsoft Excel物件」和「模組」兩個資料夾,相對應的便是Excel對象和VBA對象。
專案視窗中點選「工作表1」後,左下方會出現這個對象的屬性視窗「屬性-工作表1」。視窗中列出該對象種種屬性,選取「Name」相對應的欄位內容,直接修改為「VBA重新命名」。工作表名稱以程式語言解析的話,便是工作表這個對象的一個屬性,可以把它想做是一個人的姓名。
改名後專案視窗會顯示為「工作表1(VBA重新命名)」,所以其實工作表有兩個名稱,一個VBA才看得到的「工作表1」,屬性為「(Name)」,另一個Excel看的到的「VBA重新命名」,屬性為「Name」。
四、Excel工作表隱藏
回到Excel工作表,同樣在索引標籤滑鼠右鍵,有個選項是「隱藏」,作用是將工作表隱藏。目前快捷選單中的「取消隱藏」反灰,表示無法點選。如果真的有執行隱藏,這個「取消隱藏」可以把隱藏的工作表再顯示出來。
五、 工作表Visible屬性
再進入VBA編輯環境(簡稱VBE,VBA Editor),將「工作表1」的「Visible」屬性下拉,選擇「2 – xlSheetVeryHidden」。
六、VBA工作表隱藏
回到Excel工作表,果然看不到「VBA重新命名」,而且就算滑鼠右鍵,「取消隱藏」仍然是反灰,表示在Excel是完全看不到這個工作表,如果不是自己在VBA操作隱藏的話,其他使用者可能都不知道其實還有一個工作表存在。而瞭解VBA的讀者,只要在VBA屬性視窗下拉改變「Visible」設置即可。
補充說明,上個步驟有個選項是「1 – xlSheetHidden」,它的效果跟在Excel操作隱藏一樣。在VBA設置這個選項,回到Excel仍然可以直接取消隱藏。
七、Worksheets.Visible
也可以編寫VBA程式碼控制工作表是否隱藏。
Worksheets(“VBA重新命名”).Visible = -1:將工作表對象「VBA重新命名」的屬性「Visible」設置為「-1」,表示讓工作表正常顯示。
‘Worksheets(“VBA重新命名”).Visible = xlSheetVisible:除了快速的「-1」也可以編寫屬性值全名。
程式寫好了回到Excel執行巨集,即使是「2 – xlSheetVeryHidden」照樣取消隱藏。
VBA設定對象屬性的方式保密工作表
這一節以比較熟悉的工作表作為範例介紹,相同的對象屬性操作也適用於其他對象。例如本小節第七步驟專案視窗是選擇「Module1」狀態,屬性視窗裡可以更改模組名稱。這裡同樣是「(Name)」,同樣是在Excel看不到也維護不了的名稱。
有時候因為機密緣故,會將工作表隱藏之後加密保護活頁簿,不知道密碼的人,沒辦法看到或取消隱藏特定的工作表,這一節等於是以VBA方式保密特定工作表,不熟悉VBA的人就無從得知被VeryHidden的工作表了。
贊贊小屋服務:3,000元網頁設計,5,000元Google Kinsta主機,8,000元Excel ERP系統。
歡迎前往贊贊小屋VBA教學中心。
取得範例程式請前往VBA社團,訂閱請加入VBA Line社群。
VBA課程推薦:零基礎入門進階的20小時完整內容