2010-09-11 6 views
6

Avec un déclencheur comme une case à cocher je veux protéger mon cahier de travail. J'ai essayé Excel 2003:Comment protéger un classeur Excel à l'aide de VBA?

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

thisworkbook.unprotect("password") 

Cela ne fonctionne pas. Aucune suggestion?

+0

L'appel est ActiveWorkbook.Protect et ActiveWorkbook.Unprotect, mais cela devrait fonctionner. Plus de détails sur la description de l'erreur et où le code est aiderait cette question. –

+0

Salut richard, merci pour la réponse. Quand j'utilise thisworkbook.protect soit ne pas montrer une erreur ni le mettre à protégé. Est-ce que nous devrions activer certains sur la fonction pour écrire le code qui protège la feuille. J'ai activé ma macro. Je n'ai aucune idée – Ravi

Répondre

7

Je suis d'accord avec @Richard Morgan ... ce que vous faites devrait fonctionner, donc plus d'informations peuvent être nécessaires.

Microsoft a quelques suggestions sur options to protect your Excel 2003 worksheets.

Voici un peu plus d'info ...

De fichiers d'aide (Protect méthode):

expression.Protect(Password, Structure, Windows) 

expression requise. Une expression qui renvoie un objet classeur.

Mot de passe Variante facultative. Chaîne qui spécifie un mot de passe sensible à la casse pour la feuille de calcul ou le classeur. Si cet argument est omis, vous pouvez déprotéger la feuille de calcul ou le classeur sans utiliser de mot de passe. Sinon, vous devez spécifier le mot de passe pour déprotéger la feuille de calcul ou le classeur. Si vous oubliez le mot de passe, vous ne pouvez pas déprotéger la feuille de calcul ou le classeur. C'est une bonne idée de garder une liste de vos mots de passe et des noms de documents correspondants dans un endroit sûr.

Structure En option Variante. True pour protéger la structure du classeur (la position relative des feuilles). La valeur par défaut est False.

Windows Variante optionnelle. True pour protéger les fenêtres du classeur. Si cet argument est omis, les fenêtres ne sont pas protégées.

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

Si vous voulez travailler au niveau de la feuille de calcul, j'ai utilisé quelque chose il y a quelques années similaires quand je avais besoin pour protéger/déprotéger:

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. dans votre exemple de code que vous devez supprimer les crochets , parce que ce n'est pas une affectation fonctionnelle; aussi pour des raisons documentaires, je vous suggère d'utiliser la notation := (voir exemple de code ci-dessous)

    1. Application.Thisworkbook fait référence au livre contenant le code VBA, pas nécessairement le livre contenant les données, donc soit prudent.

Exprimez la feuille que vous travaillez sur un objet feuille et de le transmettre, avec une variable logique à la sous suivante:

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 

Dans la méthode .Protect vous pouvez définir vous voulez autoriser/interdire. Ce bloc de code activera/désactivera la protection - sans mot de passe dans cet exemple, vous pouvez l'ajouter en tant que paramètre ou codé en dur dans le Sub. Quoi qu'il en soit quelque part le PW sera codé en dur.Si vous ne voulez pas que cela, il suffit d'appeler la fenêtre de dialogue Protection et laisser l'utilisateur décider ce qu'il faut faire:

Application.Dialogs(xlDialogProtectDocument).Show 

espoir qui aide

Bonne chance - MikeD

1

Pour verrouiller classeur entier de ouverture, Thisworkbook.password option peut être utilisée dans VBA.

Si vous souhaitez protéger des feuilles de calcul, vous devez d'abord verrouiller les cellules avec l'option Thisworkbook.sheets.cells.locked = True, puis utiliser l'option Thisworkbook.sheets.protect password:="pwd".

recherche Principalement pour ces mots-clés: Thisworkbook.password ou Thisworkbook.Sheets.Cells.Locked

+0

C'est la vraie réponse au problème. –

Questions connexes