Excel - Macro para comprobar si existen varias hojas

   
Vista:

Macro para comprobar si existen varias hojas

Publicado por Jonathan (6 intervenciones) el 23/05/2016 15:53:51
Buenos días, soy bastante nuevo en macros solo que necesito una ayuda, como hacer una macro que pueda validar un listado en excel si existen los nombres de las hojas de excel, estoy demasiado confundido

Saludso
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Macro para comprobar si existen varias hojas

Publicado por GMG (105 intervenciones) el 23/05/2016 17:04:21
Esto te puede servir a modo inicio:

1
2
3
4
5
Sub SheetNames()
    For i = 1 To Sheets.Count
        Cells(i, 1) = Sheets(i).Name
    Next i
End Sub

Te pone en la primera columna de la hoja en la que estés los nombres de las distintas hojas. Puedes modificar la macro para que te haga una comparación en lugar de escribir los nombres. Por ejemplo:

1
2
3
4
5
6
7
Sub SheetNames()
    For i = 1 To Sheets.Count
        If (Sheets(i).Name = "Hoja2") Then
            MsgBox ("Hoja2 existe en este libro")
        End If
    Next i
End Sub

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro para comprobar si existen varias hojas

Publicado por Jonathan (6 intervenciones) el 23/05/2016 17:34:21
Muchas gracias GMG como ultima pregunta ¿Si digamos que la hoja no existe en el listado, para eliminarla utilizaria un else y coloco esto

Else
ActiveWindow.SelectedSheets.Delete
End If
?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro para comprobar si existen varias hojas

Publicado por agustin (149 intervenciones) el 23/05/2016 17:43:56
Si no existe la hoja como la vas a borrar? A que te refieres con listado? Expón mejor el caso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro para comprobar si existen varias hojas

Publicado por Jonathan (6 intervenciones) el 23/05/2016 17:50:34
Para explicarte mejor

tengo un archivo de excel que tiene un listado de números estos son por ejemplo: 1, 4, 6, 8..etc, el mismo archivo de excel tiene 500 hojas en un mismo archivo, lo que necesito hacer es lo siguiente. una macro que 1. busque en el listado si dentro de las 500 hojas de excel se encuentran los numero 1, 4, 6, 8 y que pueda mover hacia otro libro o mantenerlos en el mismo archivo y los que no son 1, 4, 6, 8, esos lo elimine y mantenga solamente los que aparecen en el listado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro para comprobar si existen varias hojas

Publicado por GMG (105 intervenciones) el 23/05/2016 17:55:32
Cuidado, eso te eliminaría la hoja activa.

Si no tienes una lista muy grande de hojas que deberían estar lo puedes hacer con "OR"s:

Pongamos que quieres quedarte con las hojas con nombre "Hoja1" y "Hoja3":

1
2
3
4
5
6
7
8
9
10
Sub SheetNames()
 
    For i = 1 To Sheets.Count
        If (Sheets(i).Name = "Hoja1" Or Sheets(i).Name = "Hoja3") Then
            MsgBox (Sheets(i).Name & " existe en este libro")
        Else
            Sheets(i).Delete
        End If
    Next i
End Sub

Esto te eliminaría las hojas que no se llamaran hoja 1 u hoja3. El tema es que te pregunta antes de eliminar la hoja, poniendo:
Application.DisplayAlerts = False
al inicio del código y
Application.DisplayAlerts = True
al final puedes eludir ese problema

Por otro lado, si no quieres que te notifique cada vez que encuentra una hoja que debería estar, puedes quitar el MsgBox
Y veo que dependiendo las hojas que elimines puede darte un error, ya que deja de "mirar" una hoja si se elimina la anterior.
En principio el código definitivo sería (si no se me escapa nada más):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub SheetNames()
Application.DisplayAlerts = False
 
    For i = 1 To Sheets.Count
        On Error Resume Next
        If (Sheets(i).Name = "Hoja1" Or Sheets(i).Name = "Hoja3") Then
 
        Else
            Sheets(i).Delete
            i = i - 1
        End If
    Next i
Application.DisplayAlerts = True
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro para comprobar si existen varias hojas

Publicado por jonathan (6 intervenciones) el 23/05/2016 18:00:06
mmmmm.....

Si tengo una lista muy grande utilizaria Sheets(Arrays()) ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar