close
LV超3A名牌購物網

EXCEL VBA.隱藏重要工作表,檔案開啟時自動複製一份以供填寫
                         <.准提部林.>
---------------------------------
範例檔簡介:
主要需求:
 工作表〔Sheet(9)〕為〔重要〕的 〔表格範本〕,
 平時〔隱藏〕,於檔案開啟時,自動複製一份,以供使用者填寫內容。
 
建構方案:
 工作表〔Sheet(9)〕須防止被更動,或被刪除,
 所以必須有〔保護工作表.保護活頁簿〕雙層措施,
 也須防止〔未啟用巨集〕時,可手動叫出而進行操作更改。
 
 故VBA大約須具備如下功能:
 <檔案開啟>
 自動解開〔保護活頁簿〕,複製工作表,並解除複製新表的保護,
 1.此時,還須加一層防護,無法手動叫出 Sheet(9),
   一叫出,立即自動隱藏,一般使用者無法對其操作。
 2.須提供〔檔案管理者〕可以叫出 Sheet(9) 以進行表格設計,
   設計完再隱藏。
 <檔案關閉>
 恢復〔保護活頁簿〕,自動儲存
 <密碼防護>
 1.於〔保護工作表.保護活頁簿〕兩種皆須使用密碼 。
 2.加設程式碼的〔專案保護〕,以防護以上兩個密碼。
 
程式碼1: 以 InputBox 提供〔檔案管理者〕叫出工作表
 Public uLockNo&
 
 Sub Sheet9_Show()  '快速鍵 Ctrl + V  
 Dim yy
 101: yy = Application.InputBox("請輸入權限密碼")
 If CStr(yy) = "False" Then Exit Sub
 If Len(yy) = 0 Then MsgBox "密碼未輸入!": GoTo 101
 If CStr(yy) <> "1111" Then MsgBox "密碼錯誤!": GoTo 101
 uLockNo = 1
 With Sheets("Sheet(9)")
   .Visible = True
   .Select
   .Unprotect "0000"
 End With
 End Sub
 
程式碼2:隱藏工作表
 Sub Sheet9_Hide() '快速鍵 Ctrl + M  
 uLockNo = 0
 With Sheets("Sheet(9)")
   .Protect "0000"
   .Visible = False
 End With
 End Sub
 
程式碼3:利用〔活頁簿〕的〔事件程序〕控制
 '↓〔檔案關閉〕時:保護活頁簿,儲存  
 Private Sub Workbook_BeforeClose(Cancel As Boolean)
 ThisWorkbook.Protect "0000"
 ThisWorkbook.Save
 End Sub
 
 '↓〔檔案開啟〕時:解除保護活頁簿,複製工作表 
 Private Sub Workbook_Open()
 ThisWorkbook.Unprotect "0000"
 With Sheets("Sheet(9)")
   .Visible = True
   .Copy after:=Sheets(Sheets.Count)
   ActiveSheet.Unprotect "0000"
   .Visible = False
 End With
 End Sub
 
 '↓〔選取工作表〕時:自動隱藏〔Sheet(9)〕,防止被更改及操作 
 Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 If ActiveSheet.Name = "Sheet(9)" And Val(uLockNo) = 0 Then _
  ActiveSheet.Visible = False
 End Sub 
---------------------------------
<範例檔>:

---------------------------------

LV超3A名牌購物網
arrow
arrow
    全站熱搜

    方志遠 發表在 痞客邦 留言(0) 人氣()