macros en excel

24/01/2006 - 20:54 por David | Informe spam
En macros

Que instruccion puedo usar para saber si un archivo ya esta abierto
Por que usar la instruccion:
Workbooks.Open Filename:="C:\abc .xls"
sobre un archivo ya abierto..me manda un mensaje
de que ya esta abierto y yo quiero eso

en todo caso si ya esta abierto, que seleccione
y listo

DAVID

Preguntas similare

Leer las respuestas

#1 David
24/01/2006 - 21:30 | Informe spam
No hay ninguna función para esto, tendrías que recorrer todo el conjunto de
libros activos para determinar si el que quieres está abierto. Si lo está,
lo activas, y si no lo abres. Yo utilizo el siguiente código. No es muy
ortodoxo, pero me funciona:

Sub libros()
Dim j As Variant, x As String, xf As Boolean
x = "NOMBRE DEL LIBRO"
sf = False
For Each j In Workbooks
If InStr(1, UCase(j.Name), UCase(x)) > 0 Then
j.Activate
sf = True
End If
Next
If sf = False Then Workbooks.Open Filename:=x
End Sub

Mira se te sirve como un punto de partida.

Saludos.

"David" escribió:

En macros

Que instruccion puedo usar para saber si un archivo ya esta abierto
Por que usar la instruccion:
Workbooks.Open Filename:="C:\abc .xls"
sobre un archivo ya abierto..me manda un mensaje
de que ya esta abierto y yo quiero eso

en todo caso si ya esta abierto, que seleccione
y listo

DAVID






Respuesta Responder a este mensaje
#2 KL
24/01/2006 - 21:51 | Informe spam
Hola chicos,

Se puede evitar el uso del bucle mediante el siguiente codigo:

Sub test()
Dim Nombre As String, Libro As Workbook
Nombre = "C:\temp\book2.xls"
On Error Resume Next
Set Libro = Workbooks(Dir(Nombre))
On Error GoTo 0
If Libro Is Nothing Then Set Libro = Workbooks.Open(Nombre)
With Libro
.Activate
'El resto de tu codigo aqui
End With
End Sub


Saludos,
KL


"David" <sdgm04(mapstonod)@hotmail.com> wrote in message news:
No hay ninguna función para esto, tendrías que recorrer todo el conjunto de
libros activos para determinar si el que quieres está abierto. Si lo está,
lo activas, y si no lo abres. Yo utilizo el siguiente código. No es muy
ortodoxo, pero me funciona:

Sub libros()
Dim j As Variant, x As String, xf As Boolean
x = "NOMBRE DEL LIBRO"
sf = False
For Each j In Workbooks
If InStr(1, UCase(j.Name), UCase(x)) > 0 Then
j.Activate
sf = True
End If
Next
If sf = False Then Workbooks.Open Filename:=x
End Sub

Mira se te sirve como un punto de partida.

Saludos.

"David" escribió:

En macros

Que instruccion puedo usar para saber si un archivo ya esta abierto
Por que usar la instruccion:
Workbooks.Open Filename:="C:\abc .xls"
sobre un archivo ya abierto..me manda un mensaje
de que ya esta abierto y yo quiero eso

en todo caso si ya esta abierto, que seleccione
y listo

DAVID






Respuesta Responder a este mensaje
#3 Findeo
25/01/2006 - 11:16 | Informe spam
Otra forma de saber si el libro está abierto es mediante la función siguiente
(que encontré en me acuerdo qué foro):

Function Is_Open(libro As String) As Boolean
Dim X As Object
On Error Resume Next
Set X = Workbooks(libro)
If Err = 0 Then Is_Open = True
On Error GoTo 0
End Function

Findeo


"KL" escribió:

Hola chicos,

Se puede evitar el uso del bucle mediante el siguiente codigo:

Sub test()
Dim Nombre As String, Libro As Workbook
Nombre = "C:\temp\book2.xls"
On Error Resume Next
Set Libro = Workbooks(Dir(Nombre))
On Error GoTo 0
If Libro Is Nothing Then Set Libro = Workbooks.Open(Nombre)
With Libro
.Activate
'El resto de tu codigo aqui
End With
End Sub


Saludos,
KL


"David" <sdgm04(mapstonod)@hotmail.com> wrote in message news:
> No hay ninguna función para esto, tendrías que recorrer todo el conjunto de
> libros activos para determinar si el que quieres está abierto. Si lo está,
> lo activas, y si no lo abres. Yo utilizo el siguiente código. No es muy
> ortodoxo, pero me funciona:
>
> Sub libros()
> Dim j As Variant, x As String, xf As Boolean
> x = "NOMBRE DEL LIBRO"
> sf = False
> For Each j In Workbooks
> If InStr(1, UCase(j.Name), UCase(x)) > 0 Then
> j.Activate
> sf = True
> End If
> Next
> If sf = False Then Workbooks.Open Filename:=x
> End Sub
>
> Mira se te sirve como un punto de partida.
>
> Saludos.
>
> "David" escribió:
>
>> En macros
>>
>> Que instruccion puedo usar para saber si un archivo ya esta abierto
>> Por que usar la instruccion:
>> Workbooks.Open Filename:="C:\abc .xls"
>> sobre un archivo ya abierto..me manda un mensaje
>> de que ya esta abierto y yo quiero eso
>>
>> en todo caso si ya esta abierto, que seleccione
>> y listo
>>
>> DAVID
>>
>>
>>
>>
>>
>>


Respuesta Responder a este mensaje
#4 KL
25/01/2006 - 11:22 | Informe spam
Hola Findeo,

Otra forma de saber si el libro está abierto es mediante la función siguiente
(que encontré en me acuerdo qué foro):



No es otra forma, es justo la forma que indico yo en mi mensaje solo que esta separada del codigo principal en forma de una funcion
:-)

Saludos,
KL
Respuesta Responder a este mensaje
#5 Findeo
25/01/2006 - 12:26 | Informe spam
Perdona, KL, tienes razón, pero es que yo veía mucho código en tu propuesta.

Un saludo,
Findeo


"KL" escribió:

Hola Findeo,

> Otra forma de saber si el libro está abierto es mediante la función siguiente
> (que encontré en me acuerdo qué foro):

No es otra forma, es justo la forma que indico yo en mi mensaje solo que esta separada del codigo principal en forma de una funcion
:-)

Saludos,
KL


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