2010-09-11 27 views
6

Con un gatillo como una casilla de verificación, quiero proteger mi libro de trabajo. Probé Excel 2003:Cómo proteger el libro de Excel utilizando VBA?

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

thisworkbook.unprotect("password") 

No funciona. ¿Alguna sugerencia?

+0

La llamada es ActiveWorkbook.Protect y ActiveWorkbook.Unprotect, pero que debería funcionar. Más detalles sobre la descripción del error y dónde está el código ayudarían a esta pregunta. –

+0

Hola, richard, gracias por la respuesta.cuando uso thisworkbook.protect no está mostrando un error ni lo está protegiendo. es que debemos activar alguna función para escribir código que proteja la hoja. tengo habilitar mi macro. No tengo ni idea – Ravi

Respuesta

7

Estoy de acuerdo con @Richard Morgan ... lo que está haciendo debería estar funcionando, por lo que se puede necesitar más información.

Microsoft tiene algunas sugerencias sobre options to protect your Excel 2003 worksheets.

Aquí es un poco más de información ...

De los archivos de ayuda (Proteger Método):

expression.Protect(Password, Structure, Windows) 

expresión requerida. Una expresión que devuelve un objeto Libro de trabajo.

Contraseña Variante opcional. Una cadena que especifica una contraseña sensible a las mayúsculas y minúsculas para la hoja de cálculo o el libro de trabajo. Si se omite este argumento, puede desproteger la hoja de cálculo o el libro de trabajo sin usar una contraseña. De lo contrario, debe especificar la contraseña para desproteger la hoja de cálculo o el libro de trabajo. Si olvida la contraseña, no puede desproteger la hoja de trabajo o el libro de trabajo. Es una buena idea mantener una lista de sus contraseñas y sus nombres de documentos correspondientes en un lugar seguro.

Estructura Opcional Variante. Es cierto que protege la estructura del libro de trabajo (la posición relativa de las hojas). El valor predeterminado es False.

Variante opcional de Windows. Es cierto que protege las ventanas del libro de trabajo. Si se omite este argumento, las ventanas no están protegidas.

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

Si quieres trabajar en el nivel de hoja de cálculo, que utiliza algo que hace años similares cuando necesitaba para proteger/desproteger:

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. en su código de ejemplo debe quitar los soportes porque no es una tarea funcional; También por razones documentales que sugeriría que utilice la notación := (véase el ejemplo de código siguiente)

    1. Application.Thisworkbook se refiere al libro que contiene el código VBA, no necesariamente el libro que contiene los datos, por lo ser cauteloso.

expresar la hoja que está trabajando como un objeto de hoja y transmitirlo, junto con una variable lógica a los siguientes sub:

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 

Dentro del método .Protect se puede definir lo quieres permitir/no permitir Este bloque de código activará/desactivará la protección, sin contraseña. En este ejemplo, puede agregarlo como parámetro o codificarlo en el Sub. De todos modos, en algún lugar, el PW estará codificado.Si no desea esto, simplemente llame a la ventana de diálogo Protección y dejar que el usuario decida qué hacer:

Application.Dialogs(xlDialogProtectDocument).Show 

Espero que ayude

Buena suerte - MikeD

1

Para bloquear libro entero de la apertura, la opción Thisworkbook.password se puede usar en VBA.

Si desea proteger hojas de cálculo, primero debe Bloquear las celdas con la opción Thisworkbook.sheets.cells.locked = True y luego usar la opción Thisworkbook.sheets.protect password:="pwd".

Principalmente búsqueda de estas palabras clave: Thisworkbook.password o Thisworkbook.Sheets.Cells.Locked

+0

Esta es la verdadera respuesta al problema. –

Cuestiones relacionadas