Como saber con codigo si un archivo esta abierto

18/09/2008 - 22:41 por Pregunton | Informe spam
Buenas tardes a los amigos de esta ayuda!

Les comento mi duda es quisiera que por medio de una variable ya establecida
se evalue si ese archivo esta abierto y que sino por el contrario me bote un
mensaje donde diga que debe abrir el archivo y me muestre la opcion de abrir
y deje que lo ubique y lo abra y que continue el proceso.

Espero haberme hecho enteder no soy muy bueno con la redacción, de antemano
le agradezco la colaboración que me puedan prestar.

Atentamente;

OSWALDO GAITAN ARAQUE
Bendiciones!
 

Leer las respuestas

#1 Héctor Miguel
18/09/2008 - 23:13 | Informe spam
hola, Oswaldo !

... quisiera que por medio de una variable ya establecida se evalue si ese archivo esta abierto
y que sino por el contrario me bote un mensaje donde diga que debe abrir el archivo
y me muestre la opcion de abrir y deje que lo ubique y lo abra y que continue el proceso...



hay dos o tres formas de averiguar si "determinado" libro esta abierto o si existe "determinada" hoja
voy a suponer que es una accion que se va a repetir varias veces en algun proceso
(con lo que seria mejor definir una funcion personalizada y pasarle el nombre del libro)

si cualquier duda (o informacion adicional)... comentas?
saludos,
hector.

1) si NO se trata de archivos en red...
en un modulo de codigo normal ==Function EsLibroAbierto(Libro As String) As Boolean
On Error Resume Next
EsLibroAbierto = Len(Workbooks(Libro).Name)
End Function

-> la forma de llamar a esta funcion es +/- como sigue...
If Not EsLibroAbierto("nombre del libro.xls") Then Workbooks.Open "c:uta yombre del libro.xls"

2) si SON archivos en red...
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

-> la forma de llamar a esta funcion es +/- como sigue...
If Not EsLibroAbierto("C:\Ruta y\Nombre del libro.xls") Then Workbooks.Open "C:\Ruta y\Nombre del libro.xls"

toma nota que en ambos casos el libro que se abre queda como libro activo

Preguntas similares