Macro para eliminar hojas sobrantes

Tengo un libro de Excel que debo compartir con varias personas. En uno de ellos tengo una tabla dinámica y cada vez que mis compañeros lo trabajan me dejan varias hojas “basura”.

No sé nada de macros, por lo que mi consulta es si ¿hay alguna forma de eliminar varias hojas a la vez menos las hojas de mi libro normal?

2 Respuestas

Respuesta
1

Te anexo una macro.

Cambia estos nombres "formulario", "hoja1", "hoja2", por los nombres de tus hojas que no quieras borrar o agrega más nombres, pero siembre en minúsculas.

Sub Borrar_Hojas()
'Por.Dante Amor
    Application.DisplayAlerts = False
    For i = Sheets.Count To 1 Step -1
        Select Case LCase(Sheets(i).Name)
            Case "formulario", "hoja1", "hoja2"
            Case Else: Sheets(i).Delete
        End Select
    Next
    MsgBox "Hojas eliminadas"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Borrar_Hojas
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

.

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

.

Avísame cualquier duda

.

Respuesta
1

.10.05.17

Buenas noches, Danilo:

Puedes utilizar una rutina como la siguiente.

Accede al Editor de VBA (Atajo: Alt + F11), allí inserta un módulo (Insertar-Módulo) y pega el siguiente código:

Sub limpieza()
'---- Variables modificables ----
'=== DANILO, modifica estos datos de acuerdo a tu proyecto:
'
HojaAdejar = Array("Base de datos", "Tabla Dinámica", "Auxiliar") ' ingresa dentro del paréntesis las hojas a mantener.
'
'---- fin Variables
'
' VBA coding by FeJoAl
'
'---- inicio de rutina:
'  
Application.DisplayAlerts = False
For Each LaHoja In Sheets
    Borra = True
    For hoja = 0 To Ubound(HojaAdejar)
        If HojaAdejar(hoja) = LaHoja.Name Then Borra = False
    Next
    On Error Resume Next
    If Borra Then LaHoja.Delete
    If Err.Number <> 0 Then
        Err.Clear
        Application.DisplayAlerts = True
        Exit Sub
    End If
Next
Application.DisplayAlerts = True
End Sub

Notarás al principio del código una variable donde le indicarásqué hojas preservar.

Dado que se trata de una rutina de eliminación, te recomiendo que la pruebes en una copia de tu archivo.

.

.

Buenas,

Si hubieses tenido la oportunidad de probar la solución, espero que te haya ayudado a resolver tu problema.

Si así fuera, agradeceré un comentario y que la valorices para finalizarla.
(Recuerda que mantener cierto número de respuestas pendientes impide que otros usuarios puedan consultarme)

Caso contrario, preguntame de nuevo.

Entiendo que eres nuevo por aquí.
Una vez que recibiste la respuesta debería asignarle una valorización con el botón de opciones (Excelente, Util, Etc) que tienes al pie, para que quede finalizada.

Cordialmente,

Fernando

.

.

. ----- Te quedó pendiente valorizar el tiempo que te dediqué ----

Hola,

Entiendo que eres nuevo por aquí.
Una vez que recibiste la respuesta deberías asignarle una valorización con el botón de opciones (Excelente, Util, Etc) que está al pie, para que quede finalizada. En caso de que tuvieras alguna duda, pregúntame de nuevo.

Cordialmente,
Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas