Determinar si libro está abierto

Aporta tus macros y códigos Excel de interés para la comunidad.

Reglas del Foro
Este foro no es para hacer preguntas!
Este foro solo es para que aportes algo de interés para la comunidad.
(para preguntas vuelve al índice y busca los foros de "Tus Preguntas a la Comunidad")
Compartir en:
     

Determinar si libro está abierto

Notapor TodoExcel » 21 Sep 2010 18:35

Estas función permite saber si un libro está abierto

Código: Seleccionar todo
Function WorkbookOpen(WorkBookName As String) As Boolean
' returns TRUE if the workbook is open
    WorkbookOpen = False
    On Error GoTo WorkBookNotOpen
    If Len(Application.WorkBooks(WorkBookName).Name) > 0 Then
        WorkbookOpen = True
        Exit Function
    End If
WorkBookNotOpen:
End Function


La forma de usar la función sería esta:

Código: Seleccionar todo
If Not WorkbookOpen("MyWorkbookName.xls") Then
    Workbooks.Open "MyWorkbookName.xls"
End If



Otra macro alternativa es esta:

Código: Seleccionar todo
Sub LibroAbierto()
Dim w As Workbook
For Each w In Workbooks
If w.Name = "Libro3.xls" Then
MsgBox w.Name & " abierto"
End If
Next w
End Sub


Salu2.xls
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
TodoExcel
Manager Exceluciones
Manager Exceluciones
 
Registrado: 05 Jun 2004 16:05

Re: Determinar si libro está abierto

Notapor Adrian » 21 Sep 2010 20:32

Esta es otra forma:

Function ABIERTO(ws) As Boolean
On Error Resume Next
ABIERTO = Not IsError(Workbooks(ws))
End Function
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Adrian
Moderator
Moderator
 
Registrado: 13 Jun 2004 17:24
Ubicación: Chamical La Rioja ARG

Re: Determinar si libro está abierto

Notapor elprofeuy » 10 Oct 2010 15:55

Yo le agregaría en un módulo:

sub abrirnombredelarchivo()
If Not WorkbookOpen("nombre.xls") Then
Workbooks.Open Filename:=ThisWorkbook.Path & "\nombre.xls"
End If
If WorkbookOpen("nombre.xls") Then
Workbooks("nombre.xls").Activate
End If
end sub

De esta manera se puede abrir el archivo o activarlo si ya fue abierto.

De paso, agradecer por los aportes de los compañeros porque me estaba rompiendo las neuronas como abrir (o activarlo si ya estaba abierto) el archivo sin que apareciera el mensaje de que el archivo estaba abierto y si lo quería volver abrir podía perder información. Si le contestaba sí podía perder información, si contestaba no, no me lo activaba. Con la función que aportaron y las pequeñas modificaciones que le hice, funciona perfecto: si el archivo está abierto, lo activa sino, lo abre.
Saludos de un principiante en esto de la programación.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
elprofeuy
Miembro Frecuente
Miembro Frecuente
 
Registrado: 01 Sep 2010 17:14
Ubicación: Uruguay, Canelones

Re: Determinar si libro está abierto

Notapor studiomontt » 20 Ago 2011 15:20

Aquí tengo otra solución, que al igual que la anterior revisa si el libro está abierto, sino lo abre:

Código: Seleccionar todo
On Error GoTo cerrado
Workbooks("MiArchivo.xls").Activate
GoTo abierto

cerrado:
Workbooks.Open Filename:="MiRuta\MiArchivo.xls"
'donde MiRuta es por ejemplo, "C:\Mis docuementos\" y MiArchivo el nombre del libro a buscar...

abierto:
' aquí continúan con la macro


Saludos de un autómata que se educa con google e internet....
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
studiomontt
Miembro Nuevo
Miembro Nuevo
 
Registrado: 20 Ago 2011 14:29

Re: Determinar si libro está abierto

Notapor todoexaa » 13 Sep 2011 08:27

Esta es otra forma:

Function ABIERTO(ws) As Boolean
On Error Resume Next
ABIERTO = Not IsError(Workbooks(ws))
End Function
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
todoexaa
Miembro Nuevo
Miembro Nuevo
 
Registrado: 09 Sep 2011 22:55


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros, programación y códigos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado