Visual Basic para Aplicaciones - Excel, verificar existencia de hojas

Life is soft - evento anual de software empresarial
 
Vista:

Excel, verificar existencia de hojas

Publicado por Carlos J. González (4 intervenciones) el 06/10/2006 06:02:50
Quizás alguno de ustedes me pueda ayudar con este problema con un macro de VBA de Excel.

Desde un archivo de Excel tengo que seleccionar hojas de otro archivo de Excel. El problema es este: si el nombre de hoja que se llama desde el primer archivo no existe en el segundo, la ejecución del macro se bloquea.

Antes de ejecutar el llamado necesito verificar si la lista de hojas a seleccionar que hay en el primer archivo corresponde con las que existen en el segundo. Así, en caso de no correspondencia se podría parar la ejecución con un aviso amable con instrucciones en lugar de un antipático aviso de error de Excel que deja al usuario sin saber qué hacer.

He tratado de encontrar una solución a esto por un buen tiempo y no la he logrado. Agradeceré mucho si alguno de ustedes me puede hacer alguna sugerencia.
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

RE:Excel, verificar existencia de hojas

Publicado por JuanC (243 intervenciones) el 06/10/2006 12:15:10
La solución más simple -no sé si es viable- es usar
On Error Resume Next
Con eso evitarías el mensaje de error...
Otra sería recorrer todos los nombres de las hojas del 2do libro
y compararlas con el primero; guardas los nombres en un array
o en una colección y después comparás una x una en un bucle...

Saludos desde Baires, JuanC
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

RE:Excel, verificar existencia de hojas

Publicado por Carlos José González (4 intervenciones) el 07/10/2006 04:22:12
Juan Carlos:

Muchas gracias por las sugerencias. La primera solución es factible pero puede causar que pase inadvertido un error en el listado de los nombres de las hojas.

Respecto a la segunda opción, ¿hay una instrucción que permita capturar en una variable los nombres de las hojas del segundo libro para irlos guardando en una colección?

Muchas gracias por la respuesta. A lo largo del foro he visto muchas respuestas suyas muy acertadas.

Saludos desde Bucaramanga, Colombia.
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

RE:Excel, verificar existencia de hojas

Publicado por JuanC (243 intervenciones) el 07/10/2006 13:00:21
Fijate si esto te sirve...

Sub test()
Dim wSheet As Worksheet
Dim c As Collection, i&
Set c = New Collection

For Each wSheet In Worksheets 'Acá debe hacer ref. al libro 2
c.Add wSheet.Name
Next wSheet

For i = 1 To c.Count
MsgBox c.Item(i)
Next
Set c = Nothing
End Sub

Saludos desde Baires, JuanC
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

RE:Excel, verificar existencia de hojas

Publicado por Carlos J. González (4 intervenciones) el 07/10/2006 17:39:09
Juan Carlos: Funcionó perfectamente ! La versión final fue esta:

Sub Test()
'Prueba si todas las hojas para las que se pide imagen _
tienen hoja correspondiente en "Factrs a imprimir 2.xls"
'Si alguna no la tuviera el programa se bloquearía.

Dim wSheet As Worksheet
Dim c As Collection, i&
Dim Encontrada As String

Set c = New Collection
Sheets("Facturas").Select
Range("E4").Select

For Each wSheet In Workbooks("Factrs a imprimir 2.xls").Worksheets
c.Add wSheet.Name
Next wSheet

Do While Not IsEmpty(ActiveCell)
Encontrada = "No"
Hoja1 = ActiveCell.Offset(0, -3).Value
For i = 1 To c.Count
If i = c.Count And Hoja1 <> c.Item(i) And Encontrada = "No" Then
MsgBox (Hoja1 & Chr(10) & Chr(10) & Chr(13) _
& " Este nombre de hoja no existe o es incorrecto en el archivo destino. " )
End
End If
If Hoja1 = c.Item(i) Then
Encontrada = "Si"
End If
Next

ActiveCell.Offset(1, 0).Select
Loop
Set c = Nothing
End Sub

La ayuda tuya me desbloqueó completamente.
Muchas gracias !
Desde Bucaramanga, Colombia
Carlos J. González
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

RE:Excel, verificar existencia de hojas

Publicado por Pex (1 intervención) el 04/09/2007 21:15:40
Utiliza un
On error goto "Etiqueta"
y envía un mensaje de error (Msgbox)
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