Saber si un libro esta abierto

03/02/2005 - 10:58 por MPOLO S.L. - Departamento Calidad | Informe spam
En la macro:

Set fs = CreateObject("Scripting.FileSystemObject") ' Crea un objeto de
tipo sistema
If fs.fileexists(ActiveCell.Offset(0, 8).Value) Then ' Pregunta si el
archivo existe
With CreateObject("excel.application") ' Crea un objeto excel

.Workbooks.Open (ActiveCell.Offset(0, 8).Value) ' Abre una
planilla existente

.Worksheets(ActiveCell.Offset(0, 9).Value).Activate
.Range(ActiveCell.Offset(0, 10).Value, ActiveCell.Offset(0,
11).Value).Select
.Visible = True
End With
End If

quiero saber si existe alguna forma de saber si la planilla YA ESTA ABIERTA,
para que, si lo está, directamente activarla, y no abrirla dos veces con el
comando open


Desde ya muy agradecido

Martin R Sanchez Arnoletto

Preguntas similare

Leer las respuestas

#1 KL
03/02/2005 - 11:53 | Informe spam
Hola Martin,

Yo haria esto:

Function LibroEstaAbierto(Nombre As String) As Boolean
Dim Prueba As String
On Error Resume Next
Prueba = Workbooks(Nombre).Name
LibroEstaAbierto = (Err.Number = 0)
End Function

Sub test()
MsgBox LibroEstaAbierto(ActiveCell.Offset(0, 8).Value)
End Sub

Saludos,
KL


"MPOLO S.L. - Departamento Calidad" wrote in message
news:
En la macro:

Set fs = CreateObject("Scripting.FileSystemObject") ' Crea un objeto de
tipo sistema
If fs.fileexists(ActiveCell.Offset(0, 8).Value) Then ' Pregunta si
el
archivo existe
With CreateObject("excel.application") ' Crea un objeto excel

.Workbooks.Open (ActiveCell.Offset(0, 8).Value) ' Abre
una
planilla existente

.Worksheets(ActiveCell.Offset(0, 9).Value).Activate
.Range(ActiveCell.Offset(0, 10).Value, ActiveCell.Offset(0,
11).Value).Select
.Visible = True
End With
End If

quiero saber si existe alguna forma de saber si la planilla YA ESTA
ABIERTA,
para que, si lo está, directamente activarla, y no abrirla dos veces con
el
comando open


Desde ya muy agradecido

Martin R Sanchez Arnoletto



Respuesta Responder a este mensaje
#2 MPOLO S.L. - Departamento Calidad
03/02/2005 - 16:21 | Informe spam
Hola K.L.
Disculpa pero no me ha funcionado este método, y no me doy cuenta
exactamente como es que funciona. Podrías extenderte un poquito?

Gracias desde ya
Martin R Sanchez Arnoletto

"KL" escribió en el mensaje
news:%
Hola Martin,

Yo haria esto:

Function LibroEstaAbierto(Nombre As String) As Boolean
Dim Prueba As String
On Error Resume Next
Prueba = Workbooks(Nombre).Name
LibroEstaAbierto = (Err.Number = 0)
End Function

Sub test()
MsgBox LibroEstaAbierto(ActiveCell.Offset(0, 8).Value)
End Sub

Saludos,
KL


"MPOLO S.L. - Departamento Calidad" wrote in message
news:
> En la macro:
>
> Set fs = CreateObject("Scripting.FileSystemObject") ' Crea un objeto


de
> tipo sistema
> If fs.fileexists(ActiveCell.Offset(0, 8).Value) Then ' Pregunta si
> el
> archivo existe
> With CreateObject("excel.application") ' Crea un objeto excel
>
> .Workbooks.Open (ActiveCell.Offset(0, 8).Value) ' Abre
> una
> planilla existente
>
> .Worksheets(ActiveCell.Offset(0, 9).Value).Activate
> .Range(ActiveCell.Offset(0, 10).Value, ActiveCell.Offset(0,
> 11).Value).Select
> .Visible = True
> End With
> End If
>
> quiero saber si existe alguna forma de saber si la planilla YA ESTA
> ABIERTA,
> para que, si lo está, directamente activarla, y no abrirla dos veces con
> el
> comando open
>
>
> Desde ya muy agradecido
>
> Martin R Sanchez Arnoletto
>
>
>



Respuesta Responder a este mensaje
#3 KL
03/02/2005 - 18:21 | Informe spam
Hola Martin,

El modulo q te puse se compone de la funcion LibroEstaAbierto y un sub
rocedimiento de prueba. No se si he entendido bien lo q quieres hacer, pero
puedes probar el suguiente codigo. Supongo q en la celda
ActiveCell.Offset(0, 8) tienes el nombre del fichero incluida la ruta, p.ej.
"c:uta\prueba.xls".

Saludos,
KL

'--Inicio Codigo
Sub test()
Dim NombreLibro As String
Dim NombreHoja As String
Dim Prueba As String

NombreLibro = ActiveCell.Offset(0, 8).Value
NombreHoja = ActiveCell.Offset(0, 9).Value
rng1 = ActiveCell.Offset(0, 10).Value
rng2 = ActiveCell.Offset(0, 11).Value

If Dir(NombreLibro) <> "" Then
On Error Resume Next
Prueba = Workbooks(Dir(NombreLibro)).Name
LibroEstaAbierto = (Err.Number = 0)
On Error GoTo 0

If LibroEstaAbierto Then
Workbooks(Dir(NombreLibro)).Activate
Else
Workbooks.Open (NombreLibro)
End If

With ActiveWorkbook.Worksheets(NombreHoja)
.Activate
.Range(rng1, rng2).Select
End With
End If
End Sub
'--Fin Codigo


"MPOLO S.L. - Departamento Calidad" wrote in message
news:
Hola K.L.
Disculpa pero no me ha funcionado este método, y no me doy cuenta
exactamente como es que funciona. Podrías extenderte un poquito?

Gracias desde ya
Martin R Sanchez Arnoletto

"KL" escribió en el mensaje
news:%
Hola Martin,

Yo haria esto:

Function LibroEstaAbierto(Nombre As String) As Boolean
Dim Prueba As String
On Error Resume Next
Prueba = Workbooks(Nombre).Name
LibroEstaAbierto = (Err.Number = 0)
End Function

Sub test()
MsgBox LibroEstaAbierto(ActiveCell.Offset(0, 8).Value)
End Sub

Saludos,
KL


"MPOLO S.L. - Departamento Calidad" wrote in message
news:
> En la macro:
>
> Set fs = CreateObject("Scripting.FileSystemObject") ' Crea un objeto


de
> tipo sistema
> If fs.fileexists(ActiveCell.Offset(0, 8).Value) Then ' Pregunta
> si
> el
> archivo existe
> With CreateObject("excel.application") ' Crea un objeto excel
>
> .Workbooks.Open (ActiveCell.Offset(0, 8).Value) ' Abre
> una
> planilla existente
>
> .Worksheets(ActiveCell.Offset(0, 9).Value).Activate
> .Range(ActiveCell.Offset(0, 10).Value,
> ActiveCell.Offset(0,
> 11).Value).Select
> .Visible = True
> End With
> End If
>
> quiero saber si existe alguna forma de saber si la planilla YA ESTA
> ABIERTA,
> para que, si lo está, directamente activarla, y no abrirla dos veces
> con
> el
> comando open
>
>
> Desde ya muy agradecido
>
> Martin R Sanchez Arnoletto
>
>
>








Respuesta Responder a este mensaje
#4 MPOLO S.L. - Departamento Calidad
07/02/2005 - 10:49 | Informe spam
Gracias KL
Muchas gracias
Saludos desde Menorca

Martin R Sanchez
"KL" escribió en el mensaje
news:%23ww$
Hola Martin,

El modulo q te puse se compone de la funcion LibroEstaAbierto y un sub
rocedimiento de prueba. No se si he entendido bien lo q quieres hacer,


pero
puedes probar el suguiente codigo. Supongo q en la celda
ActiveCell.Offset(0, 8) tienes el nombre del fichero incluida la ruta,


p.ej.
"c:uta\prueba.xls".

Saludos,
KL

'--Inicio Codigo
Sub test()
Dim NombreLibro As String
Dim NombreHoja As String
Dim Prueba As String

NombreLibro = ActiveCell.Offset(0, 8).Value
NombreHoja = ActiveCell.Offset(0, 9).Value
rng1 = ActiveCell.Offset(0, 10).Value
rng2 = ActiveCell.Offset(0, 11).Value

If Dir(NombreLibro) <> "" Then
On Error Resume Next
Prueba = Workbooks(Dir(NombreLibro)).Name
LibroEstaAbierto = (Err.Number = 0)
On Error GoTo 0

If LibroEstaAbierto Then
Workbooks(Dir(NombreLibro)).Activate
Else
Workbooks.Open (NombreLibro)
End If

With ActiveWorkbook.Worksheets(NombreHoja)
.Activate
.Range(rng1, rng2).Select
End With
End If
End Sub
'--Fin Codigo


"MPOLO S.L. - Departamento Calidad" wrote in message
news:
> Hola K.L.
> Disculpa pero no me ha funcionado este método, y no me doy cuenta
> exactamente como es que funciona. Podrías extenderte un poquito?
>
> Gracias desde ya
> Martin R Sanchez Arnoletto
>
> "KL" escribió en el mensaje
> news:%
>> Hola Martin,
>>
>> Yo haria esto:
>>
>> Function LibroEstaAbierto(Nombre As String) As Boolean
>> Dim Prueba As String
>> On Error Resume Next
>> Prueba = Workbooks(Nombre).Name
>> LibroEstaAbierto = (Err.Number = 0)
>> End Function
>>
>> Sub test()
>> MsgBox LibroEstaAbierto(ActiveCell.Offset(0, 8).Value)
>> End Sub
>>
>> Saludos,
>> KL
>>
>>
>> "MPOLO S.L. - Departamento Calidad" wrote in message
>> news:
>> > En la macro:
>> >
>> > Set fs = CreateObject("Scripting.FileSystemObject") ' Crea un


objeto
> de
>> > tipo sistema
>> > If fs.fileexists(ActiveCell.Offset(0, 8).Value) Then ' Pregunta
>> > si
>> > el
>> > archivo existe
>> > With CreateObject("excel.application") ' Crea un objeto


excel
>> >
>> > .Workbooks.Open (ActiveCell.Offset(0, 8).Value) '


Abre
>> > una
>> > planilla existente
>> >
>> > .Worksheets(ActiveCell.Offset(0, 9).Value).Activate
>> > .Range(ActiveCell.Offset(0, 10).Value,
>> > ActiveCell.Offset(0,
>> > 11).Value).Select
>> > .Visible = True
>> > End With
>> > End If
>> >
>> > quiero saber si existe alguna forma de saber si la planilla YA ESTA
>> > ABIERTA,
>> > para que, si lo está, directamente activarla, y no abrirla dos veces
>> > con
>> > el
>> > comando open
>> >
>> >
>> > Desde ya muy agradecido
>> >
>> > Martin R Sanchez Arnoletto
>> >
>> >
>> >
>>
>>
>>
>
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida