Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

saber si un excel esta abierto

Estas en el tema de saber si un excel esta abierto en el foro de Visual Basic clásico en Foros del Web. hola! tengo varios excel abiertos y me gustaria saber si el documento llamado consulta.xls esta abierto. he probado con: Sub main() If Workbooks.Item(1).IsOpen Then MsgBox ...
  #1 (permalink)  
Antiguo 05/06/2009, 06:44
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
saber si un excel esta abierto

hola!
tengo varios excel abiertos y me gustaria saber si el documento llamado consulta.xls esta abierto.

he probado con:
Sub main()

If Workbooks.Item(1).IsOpen Then
MsgBox "si"
End If

End Sub

pero no hace nada. he estado mirando y parece que no existe la funcion isopen para workbooks. como lo puedo hacer?

gracias por adelantado!
  #2 (permalink)  
Antiguo 05/06/2009, 06:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: saber si un excel esta abierto

Lo que puedes hacer es recorrer todos los libros para saber si está abierto uno con el nombre del archivo:
Código vb:
Ver original
  1. Dim Libro As Workbook
  2. For Each Libro In Workbooks
  3.     If LCase(Libro.Name) = "archivo.xls" Then
  4.         MsgBox "archivo.xls está abierto"
  5.     End If
  6. Next Libro
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 05/06/2009, 07:00
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: saber si un excel esta abierto

ei, David, muchas gracias!
era lo que estaba buscando!
saludos!
  #4 (permalink)  
Antiguo 26/02/2010, 16:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: saber si un excel esta abierto

David un recibe un cordial saludo. Nunca antes he utilizado este medio y no se como hacer para preguntar y lo que necesito es muy parecido a la pregunta actual. Ante todo quiero agradecerte por la ayuda que me puedas brindar.

Tengo una macro que extrae información de determinados libros que tengo abiertos Inmediatamente me extrae la información del segundo libro abierto, lo cierra y sigue con el siguiente. El problema es que necesito que cuando ya no encuentre libros abiertos no me genere error para poder ejecutar otras órdenes en el libro que posee la macro. Lo anterior se debe a que trabajo con las ordenes For u= 125 (no siembre son 125) y Next u. Actualmente lo que hago es que cuando me genera el error le doy finalizar y ejecuto otra macro. ¿Cómo hago para que cuando no encuentre el siguiente libro abierto no me presente error y pueda seguir ejecutando otras órdenes? El siguiente es el resumen de lo que hago en la primera macro:

Sub CULTIVOS()
For u = 1 To 125
Workbooks(1).Sheets(1).Activate
Workbooks(2).Sheets(1).Activate
“EJECUTA EL PROCEDIMIENTO”
Workbooks(2).Sheets(1).Activate
ActiveWorkbook.Close False
Workbooks(2).Sheets(1).Activate
Next u

Muchas gracias por la atención prestada.
  #5 (permalink)  
Antiguo 27/02/2010, 08:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: saber si un excel esta abierto

¿No sería mejor usar un For Each como en el ejemplo?

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:59.