2 opciones para trabajar archivo

29/09/2009 - 18:13 por Brenda | Informe spam
Cuál sería la instruccion para trabajar un archivo que "no se sabe si esta
abierto"
Aqui adjunto un ensayo como a mi me gustaria

Sub Proyecta()
If(ProyectaE1.xls).Está abierto
Windows("ProyectaE1.xls").Activate
Else
ChDir "C:\E1_11G12T"
Workbooks.Open Filename:="C:\E1_11G12T\ProyectaE1.xls
End Sub

Muchisimas gracias por su atención
Brenda
 

Leer las respuestas

#1 Héctor Miguel
29/09/2009 - 20:02 | Informe spam
hola, Brenda !

Cual seria la instruccion para trabajar un archivo que "no se sabe si esta abierto"
Aqui adjunto un ensayo como a mi me gustaria

Sub Proyecta()
If(ProyectaE1.xls).Esta abierto
Windows("ProyectaE1.xls").Activate
Else
ChDir "C:\E1_11G12T"
Workbooks.Open Filename:="C:\E1_11G12T\ProyectaE1.xls
End Sub



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)

solo te sugiero no usar la instruccion Windows("...XLS").Activate
ya que no todas las configuraciones muestran la EXTension en la ventana de sus archivos (?)

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 si quisierar abrir "el libro" 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 si quisierar abrir "el libro" 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