Código para saber si un libro esta abierto

27/06/2005 - 23:13 por Esteban Dido | Informe spam
Hola,
¿Cómo se puede saber por código sin un determinado libro está abierto?
Gracias
Saludos

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
27/06/2005 - 23:29 | Informe spam
hola, Esteban !

... saber por codigo sin un determinado libro esta abierto?



si vas a usar 'con frecuencia' la busqueda de libros [en la sesion]...
[te sugiero] usa una funcion personalizada y 'preguntale' [en el codigo] por el nombre del libro...
-te expongo un ejemplo al final-

si cualquier duda... ¿comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==Function EsLibroAbierto(ByVal Nombre As String) As Boolean
Dim Libro As Workbook
On Error Resume Next
Set Libro = Workbooks(Nombre)
EsLibroAbierto = (Not Libro Is Nothing)
Set Libro = Nothing
End Function
' y una macro de +/- como le podrias dar 'uso' ...
Sub CerrarLibroAbierto()
Dim EsteLibro As String
EsteLibro = "X"
If EsLibroAbierto(EsteLibro) Then
MsgBox "El libro " & EsteLibro & " se está cerrando..."
' aqui el codigo necesario para cerrarlo... '
Else
MsgBox "El libro " & EsteLibro & " está ""ausente""."
End If
End Sub
Respuesta Responder a este mensaje
#2 Héctor Miguel
27/06/2005 - 23:35 | Informe spam
hola, Esteban !

... saber por codigo sin un determinado libro esta abierto?



otra posibilidad [anque tu consulta no lo menciona] seria que el 'determinado' libro este en red -?-
para lo cual, seria necesario modificar la 'forma de acceso al archivo' en la funcion [EsLibroAbierto]
[te expongo un ejemplo al final]
-> toma nota de que sera necesario especificar la ruta 'completa' el archivo 'escaneado' <-

si cualquier duda... comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==Function EsLibroAbierto(Nombre As String) As Boolean
Dim Archivo As Byte: Archivo = FreeFile: On Error Resume Next
Open Nombre For Binary Access Read Write Lock Read Write As #Archivo
Close #Archivo
If Err.Number = 0 Then Exit Function
EsLibroAbierto = True: Err.Clear
End Function

una forma de 'llamarla' dentro de otra/s parte/s del codigo seria +/- como sigue...
If EsLibroAbierto("C:\Ruta y\Nombre del archivo.xls") Then...
Respuesta Responder a este mensaje
#3 Esteban Dido
27/06/2005 - 23:45 | Informe spam
Hola Héctor,
¿No hay algo más sencillo?. Sólo quiero saber si un archivo, (por ejemplo
MiLibro.xls) está abierto, para efectos de leer/escribir algo en una hoja de
ese libro. El resto del código lo tengo, sólo que necesito saber si está
abierto, para que lo abra en caso de estar cerrado y no lo abra en caso
contrario.
No, no está en red.

Gracias y Saludos


"Héctor Miguel" escribió en el mensaje
news:
hola, Esteban !

> ... saber por codigo sin un determinado libro esta abierto?

si vas a usar 'con frecuencia' la busqueda de libros [en la sesion]...
[te sugiero] usa una funcion personalizada y 'preguntale' [en el codigo]


por el nombre del libro...
-te expongo un ejemplo al final-

si cualquier duda... ¿comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==> Function EsLibroAbierto(ByVal Nombre As String) As Boolean
Dim Libro As Workbook
On Error Resume Next
Set Libro = Workbooks(Nombre)
EsLibroAbierto = (Not Libro Is Nothing)
Set Libro = Nothing
End Function
' y una macro de +/- como le podrias dar 'uso' ...
Sub CerrarLibroAbierto()
Dim EsteLibro As String
EsteLibro = "X"
If EsLibroAbierto(EsteLibro) Then
MsgBox "El libro " & EsteLibro & " se está cerrando..."
' aqui el codigo necesario para cerrarlo... '
Else
MsgBox "El libro " & EsteLibro & " está ""ausente""."
End If
End Sub


Respuesta Responder a este mensaje
#4 Héctor Miguel
28/06/2005 - 00:20 | Informe spam
hola, Esteban !

... algo mas sencillo?
... saber si un archivo, (por ejemplo MiLibro.xls) esta abierto, para... leer/escribir algo en... ese libro
... que lo abra en caso de estar cerrado y no lo abra en caso contrario.



mas sencillo ??? pues... [creo que] usando SOLO las partes 'esenciales' del codigo
p.e. [omitiendo varios 'convencionalismos' al programar como declarar variables y etc.]...
[... otras partes de tu codigo ...]
On Error Resume Next
Set MiLIbro = Workbooks("MiLibro")
If MiLIbro Is Nothing Then Workbooks.Open "C:\Ruta y\carpetas donde esta\MiLibro.xls"
[... aqui sigue tu macro de manera normal... ]

en caso de que 'MiLibro' estuviera cerrado... lo abre ->y lo deja como activo<- <= OJO
si necesitas que el libro 'activo' siga siendo el que contiene la macro en ejecucion... modifica a...
If MiLIbro Is Nothing Then Workbooks.Open _
"C:\Ruta y\carpetas donde esta\MiLibro.xls": ThisWorkbook.Activate

si cualquier duda... comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#5 Esteban Dido
28/06/2005 - 00:51 | Informe spam
Hola, H
¡No sé qué estoy haciendo mal!. No me funciona. Me da error 9 Subíndice
fuera del intervalo.
????????

Saludos
"Héctor Miguel" escribió en el mensaje
news:
hola, Esteban !

> ... algo mas sencillo?
> ... saber si un archivo, (por ejemplo MiLibro.xls) esta abierto, para...


leer/escribir algo en... ese libro
> ... que lo abra en caso de estar cerrado y no lo abra en caso contrario.

mas sencillo ??? pues... [creo que] usando SOLO las partes


'esenciales' del codigo
p.e. [omitiendo varios 'convencionalismos' al programar como declarar


variables y etc.]...
[... otras partes de tu codigo ...]
On Error Resume Next
Set MiLIbro = Workbooks("MiLibro")
If MiLIbro Is Nothing Then Workbooks.Open "C:\Ruta y\carpetas donde


esta\MiLibro.xls"
[... aqui sigue tu macro de manera normal... ]

en caso de que 'MiLibro' estuviera cerrado... lo abre ->y lo deja como


activo<- <= OJO
si necesitas que el libro 'activo' siga siendo el que contiene la macro en


ejecucion... modifica a...
If MiLIbro Is Nothing Then Workbooks.Open _
"C:\Ruta y\carpetas donde esta\MiLibro.xls": ThisWorkbook.Activate

si cualquier duda... comentas?
saludos,
hector.


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida