Eliminar hojas nombradas en una columna excel

Deseo saber si hay alguna macro que haga lo siguiente.

En una hoja de mi libro de trabajo llamada "Resumen" tengo la capacidad de traer en la columna C los nombres de las hojas que estoy trabajando en ese libro (omitiendo en dicho listado la hoja "Resumen"). Con el listado que hay en la columna C, deseo eliminar las hojas nombradas ahí, es decir tengo en la celda c2 el valor "Andres" y en la celda c3 el valor "Camilo", entre otros más (c4, c5, c6 etc), lo cual quiere decir que mi libro de trabajo tengo una hoja nombrada "Andres", otra nombrada "Camilo", entre otras más, por medio de una macro deseo eliminar las hojas enlistadas en la columna C, y en dado caso que una de estas hojas enlistadas ya no exista, la macro esté en la capacidad de omitir las hojas ya no exisitentes y siga eliminando las existentes, pero con la condicion que estén nombradas en la columna C.

1 Respuesta

Respuesta
1

Te dejo un ejemplo suponiendo que la hoja donde tienes tu listado se llama base:

Sub EliminarHojas_lista()
    Dim oWorksheet As Worksheet
    Dim Nomhoja As String
UltFila = Sheets("base").Range("c" & Rows.Count).End(xlUp).Row
For i = 2 To UltFila
Nomhoja = Sheets("base").Cells(i, 3).Value
    For Each oWorksheet In ThisWorkbook.Worksheets
        If oWorksheet.Name = Nomhoja Then
            Application.DisplayAlerts = False
            oWorksheet.Delete
            Application.DisplayAlerts = True
        End If
    Next
Next i  
End Sub

Prueba y me dejas saber como te fue.

Para evitar que te elimine la hoja en la que tienes tu listado intercambia el código por:

'cabia este codigo
If oWorksheet.Name = Nomhoja Then
'por
If oWorksheet.Name = Nomhoja And oWorksheet.Name <> "base" Then

¡Gracias!

Funciona de maravilla, para mi caso, cambie la columna C por la DE (en esta columna es donde edentifico el nobmre de las hojas a eliminar), también cambie el nombre, pero el código quedó así, agreango lo que me indicas apra no eliminar la hoja actual en la que estoy ubicado.

Este cambio lo hice en la línea 4 después de .Range("d" & Rows... la de resltada es la columna, al igual que en la línea 6 después de .Cells(i, 4).Value la resaltada es la tambien la columna.

Mil Gracias.

Sub EEliminar_Hojas_Identificadas()
 Dim oWorksheet As Worksheet
 Dim Nomhoja As String
UltFila = Sheets("Valores").Range("d" & Rows.Count).End(xlUp).Row
For i = 2 To UltFila
Nomhoja = Sheets("Valores").Cells(i, 4).Value
 For Each oWorksheet In ThisWorkbook.Worksheets
 If oWorksheet.Name = Nomhoja And oWorksheet.Name <> "Valores" Then
 Application.DisplayAlerts = False
 oWorksheet.Delete
 Application.DisplayAlerts = True
 End If
 Next
Next i
End Sub

Que bien que te sirvió.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas