> ... 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
> ... 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...
Gracias y Saludos
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje
news:uvElS91...@TK2MSFTNGP12.phx.gbl...
> ... 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
Saludos
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje
news:e7P8fZ2e...@TK2MSFTNGP09.phx.gbl...
> No se que... No me funciona... da error 9 Subindice fuera del intervalo.
significa que no se encontro un elemento dentro de una coleccion de objetos :(
[probablemente] necesitaras 'completar' el nombre del archivo CON la extension ".xls" -?-
p.e. en lugar de utilizar Workbooks("MiLibro") usa: Workbooks("MiLibro.xls")
comentas?
saludos,
hector.
--
Saludos
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje
news:urd#922eFH...@TK2MSFTNGP10.phx.gbl...
> Esta con la extension .xls ?????
[entonces]... que dice la linea donde [o en cual de ellas] 'salta el error' ?
comentas?
saludos,
hector.