Macro desproteger SOLO hojas ACTIVAS

Tengo la siguiente macro para desproteger las hojas de un libro.

La macro me tarda mucho ya que hay muchas hojas en el libro.

Como puedo hacer para solo ejecutar esta macro sobre las hojas "VISIBLES" del libro.
No quiero que se lanza la macro para Hojas OCULTAS

ActiveSheet. Unprotect ("XXX")
Dim hojas As Worksheet
For Each hojas In ActiveWorkbook.Worksheets
hojas.Unprotect Password:="XXX"
Next

1 Respuesta

Respuesta
3

Sería así:

Sub DesprotegeHoja()
    Dim hojas As Worksheet
    For Each hojas In ActiveWorkbook.Worksheets
        If hojas.Visible = -1 Then
            hojas.Unprotect Password:="XXX"
        End If
    Next
End Sub

La macro tiene que recorrer todas las hojas y verificar si está visible, si tienes muchas hojas, también es probable que tarde mucho. Prueba y me comentas

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias! 

al final he decido proteger /desproteger una a una las hojas

Sabes como se puede simplificar la escritura de la macro?

Sheets("3.1 Breakdown equipment P1").Visible = True

Sheets("3.1 Breakdown equipment P1").Select

call Desproteger_hoja_activa
Sheets("3.1 Breakdown equipment P2").Visible = True

Sheets("3.1 Breakdown equipment P2").Select

call Desproteger_hoja_activa

Sheets("3.1 Breakdown equipment P3").Visible = True

Sheets("3.1 Breakdown equipment P3").Select

call Desproteger_hoja_activa

Sheets("3.1 Breakdown equipment P4").Visible = True

Sheets("3.1 Breakdown equipment P4").Select

call Desproteger_hoja_activa

Sheets("3.1 Breakdown equipment P5").Visible = True

Sheets("3.1 Breakdown equipment P5").Select

call Desproteger_hoja_activa

Sheets("3.1 Breakdown equipment P6").Visible = True

Sheets("3.1 Breakdown equipment P6").Select

call Desproteger_hoja_activa

gracias

Ya no entendí bien, ¿quieres desproteger las hojas ocultas o las visibles?

Qué tienes en esta macro: Desproteger_hoja_activa

¡Gracias! 

quiero desproteger las hojas visibles

Sub Desproteger_hoja_activa()
ActiveSheet.Unprotect ("XXXX")

End Sub

Entonces utiliza la macro que te envié, solamente desprotegerá las hojas visibles, además no es necesario seleccionar la hoja para desprotegerla.

Sub DesprotegeHoja()
    For Each hojas In ActiveWorkbook.Worksheets
        If hojas.Visible = -1 Then
            hojas.Unprotect Password:="XXX"
        End If
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas