Como eliminar hojas ocultas en excel con vba y que no borren las que no están ocultas

Consulta, existe alguna macro que eliminen solo las hojas ocultas, ejemplo tengo 40 hojas o pestañas desocultas y 120 hojas ocultas, quisiera eliminar solo las ocultas y que se queden las 40 hojas que no esán ocultas, si me podrían dar una mano

1 Respuesta

Respuesta
1

Entra al Editor de macros, inserta un módulo y allí copia lo siguiente:

Sub eliminaHojasOcultas()
'x Elsamatilde
Dim sh As Worksheet
'se impide el mensaje de alerta
Application.DisplayAlerts = False
'se recorre la colección de hojas eliminando solo las ocultas, que previamente se visibiliza
For Each sh In Sheets
    If sh.Visible = False Or sh.Visible = xlSheetVeryHidden Then
        sh.Visible = True: sh.Delete
    End If
Next sh
'se devuelve el estado True a los mensajes
Application.DisplayAlerts = True
'opcional:
MsgBox "Fin del proceso.", , "Información"
End Sub

*No te pierdas la promoción en manuales Excel. Videos demo de los contenidos de cada manual.

500Macros, en un solo libro, ordenadas, con imágenes y ejercicios.

Bucles: 85 macros separadas por tipo de estructura (While... Wend, Do... Loop, For ... Next, For Each... Next, etc)

Excelente Elsa, muchas gracias, pero como puedo hace para que luego que aparezca el msgbox se quede dentro del excel y que no vuelva a la ventana del módulo?

Selecciona alguna hoja 'visible', por ejemplo INICIO o el nombre que sea, luego del mensaje.

'opcional:
MsgBox "Fin del proceso.", , "Información"
'seleccionar una hoja visible. Por ej:
Sheets("INICIO").Select
[A1].Select     'ajustar celda
End Sub

Sdos!

Igual vuelve a la hoja de visual Basic Elsa =(...no se que estoy haciendo mal, hay alguna forma que cuando le dé clic al msgbox se quede en la hoja donde yo deje el cursor o una celda activa?

En primer lugar este libro debe ser guardado... Libro1. Da idea de que aún no se guardó.

Se supone que la macro estará en el mismo libro que tiene todas las hojas visibles y ocultas.

Reemplaza en la macro el nombre de la hoja INICIO por la tuya donde quieras que se posicione (en tu imagen no se ve cuál es esa hoja).

Y ajusta la celda[A1] por [A2]... o sería lo mismo escribirlo así: Range("A2").Select

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas