Saber si un archivo excel esta abierto mediante VBA

Tengo un código VBA que cuando lo ejecuto me crea un archivo excel con los datos de una tabla, si ejecuto dicho código me sobreescribe el fichero existente pero si el archivo esta abierto me genera un error, por lo que mi pregunta es ¿cómo puedo programar en VBA para que mire si el fichero excel esta abierto?

1 respuesta

Respuesta
1

Una manera es recorrer los libros abiertos de esta forma:

Dim Libro As Workbook
For Each Libro In Workbooks
    If LCase(Libro.Name) = "libro.xlsx" Then
        MsgBox "El archivo  libro.xlsx está abierto"
    End If
Next 

Cambia libro.xlsx por tu archivo.

Por favor, si te ha valido la respuesta, puntúala y cierra la pregunta.

Gracias por responder tan rápido, este código que pones ¿es para poner en un modulo o puedo ponerlo en un evento click? Lo digo por que lo he puesto y me aparece el siguiente error, señalando "Libro As Workbook"

"error de compilación"

"No se ha definido el tipo definido por el usuario"

Puedes ponerlo asi a nivel de módulo para que esté visible en todas las hojas del libro.

Public Sub Comprobar_Libro()
Dim Libro As Workbook
For Each Libro In Workbooks
    If LCase(Libro.Name) = "libro.xlsx" Then
        MsgBox ("El libro está abierto")
    End If
Next
End Sub

Para llamar al procedimiento simplemente escribe:

Comprobar_Libro

Gracias, ¿y para meterlo en un evento "click"?

Esto por ejemplo, se ejecuta cuando se pulsa un botón en la hoja (Evento click)

Private Sub CommandButton1_Click()
Dim Libro As Workbook
For Each Libro In Workbooks
    If LCase(Libro.Name) = "libro.xlsx" Then
        MsgBox ("El libro está abierto")
    End If
Next
End Sub

Por favor, si te ha valido la respuesta, puntúala y cierra la pregunta.

Perdona que te insista tanto pero la solución que me das me da el siguiente error

"error de compilación"

"No se ha definido el tipo definido por el usuario"

Envíame tu libro

[email protected]

Y lo miro, no debería dar error.

Pero yo necesito que sea en Access.

Disculpa hombre, estaba respondiendo en el foro de Excel también y creí que tu consulta era de Excel Vba.

Puedes probar esto:

- Activas el libro de excel que quieras activar con: Windows("archivo.xlsx").activate

- Usas la instrucción: On Error

Es decir, activas el libro si no da error quiere decir que esta abierto y si da error significa que no.

¡Gracias! por todas las molestias, al final me has dado la idea de jugar con On Error, que aunque no tengo mucha idea al final he conseguido hacer lo que quería.

Añade tu respuesta

Haz clic para o