2010-09-11 156 views
6

使用像複選框這樣的觸發器我想保護我的工作簿。我試過Excel 2003:如何使用VBA保護Excel工作簿?

thisworkbook.protect("password",true,true) 

thisworkbook.unprotect("password") 

它不工作。有什麼建議麼?

+0

電話是ActiveWorkbook.Protect和ActiveWorkbook.Unprotect,但應該工作。有關錯誤描述和代碼位置的更多詳細信息將有助於解決此問題。 – 2010-09-11 11:32:09

+0

嗨理查德,謝謝你的回覆。當我使用這個工作簿.protect既沒有顯示錯誤也沒有將其設置爲受保護。是否我們應該開啓一些功能來編寫保護表單的代碼。我已啓用我的宏。我沒有任何線索 – Ravi 2010-09-11 11:57:34

回答

7

我同意@理查德摩根...你在做什麼應該工作,所以可能需要更多的信息。

微軟對options to protect your Excel 2003 worksheets有一些建議。

這裏是一個小的詳細信息...

從幫助文件(保護法):

expression.Protect(Password, Structure, Windows) 

表達必需。一個返回Workbook對象的表達式。

Password可選變體。爲工作表或工作簿指定區分大小寫的密碼的字符串。如果省略此參數,則可以在不使用密碼的情況下解除工作表或工作簿的保護。否則,您必須指定密碼才能解除工作表或工作簿的保護。如果忘記密碼,則無法取消保護工作表或工作簿。將密碼及其相應文檔名稱列在安全的地方是個好主意。

結構可選變體。正確以保護工作簿的結構(工作表的相對位置)。默認值是False。

Windows可選變體。正確以保護工作簿窗口。如果省略該參數,則窗口不受保護。

ActiveWorkbook.Protect Password:="password", Structure:=True, Windows:=True 

如果你想在工作層面的工作,我同樣年前用過的東西,當我需要保護/取消保護:

Sub ProtectSheet() 
    ActiveSheet.Protect "password", True, True 
End Sub 

Sub UnProtectSheet() 
    ActiveSheet.Unprotect "password" 
End Sub 

Sub protectAll() 
    Dim myCount 
    Dim i 
    myCount = Application.Sheets.Count 
    Sheets(1).Select 
    For i = 1 To myCount 
     ActiveSheet.Protect "password", true, true 
     If i = myCount Then 
      End 
     End If 
     ActiveSheet.Next.Select 
    Next i 
End Sub 
1
  1. 在你的示例代碼,你必須卸下支架,因爲它不是功能性的任務;也爲紀錄片原因我建議您使用:=符號(見下面的示例代碼)

  2. Application.Thisworkbook是指含有VBA代碼的書,不一定包含數據的書,因此要小心。

快遞你工作作爲表對象的片,用邏輯變量傳遞,彙集到下面的子:

Sub SetProtectionMode(MySheet As Worksheet, ProtectionMode As Boolean) 

    If ProtectionMode Then 
     MySheet.Protect DrawingObjects:=True, Contents:=True, _ 
         AllowSorting:=True, AllowFiltering:=True 
    Else 
     MySheet.Unprotect 
    End If 
End Sub 

.Protect方法,你可以定義哪些你想允許/禁止。此代碼塊將開啓/關閉保護 - 在本例中沒有密碼,您可以將其添加爲參數或硬編碼在Sub中。無論如何,PW將被硬編碼。如果你不希望這樣,只需調用保護對話框窗口,讓用戶決定做什麼:

Application.Dialogs(xlDialogProtectDocument).Show 

希望幫助

祝你好運 - 拾音

1

要鎖定從整個工作簿在VBA中可以使用Thisworkbook.password選項。

如果要保護工作表,則必須先使用選項Thisworkbook.sheets.cells.locked = True鎖定單元格,然後使用選項Thisworkbook.sheets.protect password:="pwd"

主要搜索這些關鍵字:Thisworkbook.passwordThisworkbook.Sheets.Cells.Locked

+0

這是問題的真正答案。 – 2017-02-01 15:37:52

相關問題