Detectar Libro Abierto en L.A.N.

17/10/2003 - 19:06 por Cotarelo63 | Informe spam
Tengo un programa que he desarrollado en Excel con varios archivos: uno es
el principal de trabajo, y otros son los que sirven de Base de Datos.
Dicho programa lo uso en una red de area local, para lo cual cada usuario de
la red tiene una versión del archivo principal de trabajo en el Directorio
Común, donde están también los archivos de BD.
El problema que se me plantea es cuando un usuario de la red está efectuando
modificaciones en los archivos de Base de datos. En este caso, si quiero
hacer una modificación desde otro puesto de la red me abre una versión de
"sólo lectura" del archivo, dado que está en uso por otro usuario.
Lo que quiero es que en lugar de abrir esta versión de "sólo lectura" poner
un mensaje que avise del caso. Por tanto necesito alguna instrucción que
detecte si el archivo de BD está abierto por otro puesto.
Agradeceré alguna solución

Saludos

Juan Carlos Pérez
Asturias-España

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
17/10/2003 - 21:25 | Informe spam
No sé si te servirá: al abrir el libro puedes consultar si está abierto en modo de sólo lectura y si es así cerrarlo, algo como:

Workbooks.Open ("UnidadDeRed:\Libro.xls")
If ActiveWorkbook.ReadOnly Then
MsgBox "El libro ya está abierto en otro equipo, por lo que se cerrará."
ActiveWorkbook.Close
End If

Otra posibilidad es que al abrir el libro se creara un fichero de control en la unidad de red, y se borrara al cerrarlo. En este caso, incluso sería posible saber qué equipo está editando el libro usando una función de la API de Windows que debo tener por algún sitio.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Cotarelo63" escribió en el mensaje news:
Tengo un programa que he desarrollado en Excel con varios archivos: uno es
el principal de trabajo, y otros son los que sirven de Base de Datos.
Dicho programa lo uso en una red de area local, para lo cual cada usuario de
la red tiene una versión del archivo principal de trabajo en el Directorio
Común, donde están también los archivos de BD.
El problema que se me plantea es cuando un usuario de la red está efectuando
modificaciones en los archivos de Base de datos. En este caso, si quiero
hacer una modificación desde otro puesto de la red me abre una versión de
"sólo lectura" del archivo, dado que está en uso por otro usuario.
Lo que quiero es que en lugar de abrir esta versión de "sólo lectura" poner
un mensaje que avise del caso. Por tanto necesito alguna instrucción que
detecte si el archivo de BD está abierto por otro puesto.
Agradeceré alguna solución

Saludos

Juan Carlos Pérez
Asturias-España



Respuesta Responder a este mensaje
#2 Cotarelo63
19/10/2003 - 10:02 | Informe spam
Gracias, Fernando.
Lo probaré. No obstante, antes de abrir el libro en "Solo Lectura" sale un
cuadro de diálogo preguntando si quiere abrirlo en solo lectura. Yo quería
que ese cuadro no saliera. Probaré con application.displayalerts=false, pero
con esta ultima no sé que hará por defecto excel (abrir el libro o no
abrirlo). En caso de que lo abra automaticamente tu idea funcionaría
correctamente.
Gracias de nuevo, Fernando, por la labor que haces en general ayudando a
todos los participantes del grupo desinteresadamente.
Por cierto, ¿Eres el único MS MVP en España?
Saludos

Juan Carlos Pérez
Asturias-España


"Fernando Arroyo" escribió en el mensaje
news:#
No sé si te servirá: al abrir el libro puedes consultar si está abierto en
modo de sólo lectura y si es así cerrarlo, algo como:

Workbooks.Open ("UnidadDeRed:\Libro.xls")
If ActiveWorkbook.ReadOnly Then
MsgBox "El libro ya está abierto en otro equipo, por lo que se cerrará."
ActiveWorkbook.Close
End If

Otra posibilidad es que al abrir el libro se creara un fichero de control en
la unidad de red, y se borrara al cerrarlo. En este caso, incluso sería
posible saber qué equipo está editando el libro usando una función de la API
de Windows que debo tener por algún sitio.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Cotarelo63" escribió en el mensaje
news:
Tengo un programa que he desarrollado en Excel con varios archivos: uno


es
el principal de trabajo, y otros son los que sirven de Base de Datos.
Dicho programa lo uso en una red de area local, para lo cual cada usuario


de
la red tiene una versión del archivo principal de trabajo en el Directorio
Común, donde están también los archivos de BD.
El problema que se me plantea es cuando un usuario de la red está


efectuando
modificaciones en los archivos de Base de datos. En este caso, si quiero
hacer una modificación desde otro puesto de la red me abre una versión de
"sólo lectura" del archivo, dado que está en uso por otro usuario.
Lo que quiero es que en lugar de abrir esta versión de "sólo lectura"


poner
un mensaje que avise del caso. Por tanto necesito alguna instrucción que
detecte si el archivo de BD está abierto por otro puesto.
Agradeceré alguna solución

Saludos

Juan Carlos Pérez
Asturias-España



Respuesta Responder a este mensaje
#3 Fernando Arroyo
19/10/2003 - 13:29 | Informe spam
"Cotarelo63" escribió en el mensaje news:
Gracias, Fernando.
Lo probaré. No obstante, antes de abrir el libro en "Solo Lectura" sale un
cuadro de diálogo preguntando si quiere abrirlo en solo lectura. Yo quería
que ese cuadro no saliera. Probaré con application.displayalerts=false, pero
con esta ultima no sé que hará por defecto excel (abrir el libro o no
abrirlo). En caso de que lo abra automaticamente tu idea funcionaría
correctamente.



A mí sí me funciona desactivar las advertencias antes de abrir el libro, pero, como bien dices, es cuestión de que lo pruebes.

Gracias de nuevo, Fernando, por la labor que haces en general ayudando a
todos los participantes del grupo desinteresadamente.
Por cierto, ¿Eres el único MS MVP en España?
Saludos




Afortunadamente somos muchos los que intentamos ayudar. Yo creo que a mí me dieron lo de MVP más que nada por pesado :-)
Ahora mismo, soy el único en España de Excel. Héctor Miguel también lo es, si bien él no es español. Hay bastantes más, sobre todo en Access (una pequeña plaga :-DD) y en Windows, y también en VB, en ADO, en SQL...
Un saludo.


Fernando Arroyo
MS MVP - Excel

Juan Carlos Pérez
Asturias-España


"Fernando Arroyo" escribió en el mensaje
news:#
No sé si te servirá: al abrir el libro puedes consultar si está abierto en
modo de sólo lectura y si es así cerrarlo, algo como:

Workbooks.Open ("UnidadDeRed:\Libro.xls")
If ActiveWorkbook.ReadOnly Then
MsgBox "El libro ya está abierto en otro equipo, por lo que se cerrará."
ActiveWorkbook.Close
End If

Otra posibilidad es que al abrir el libro se creara un fichero de control en
la unidad de red, y se borrara al cerrarlo. En este caso, incluso sería
posible saber qué equipo está editando el libro usando una función de la API
de Windows que debo tener por algún sitio.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Cotarelo63" escribió en el mensaje
news:
> Tengo un programa que he desarrollado en Excel con varios archivos: uno
es
> el principal de trabajo, y otros son los que sirven de Base de Datos.
> Dicho programa lo uso en una red de area local, para lo cual cada usuario
de
> la red tiene una versión del archivo principal de trabajo en el Directorio
> Común, donde están también los archivos de BD.
> El problema que se me plantea es cuando un usuario de la red está
efectuando
> modificaciones en los archivos de Base de datos. En este caso, si quiero
> hacer una modificación desde otro puesto de la red me abre una versión de
> "sólo lectura" del archivo, dado que está en uso por otro usuario.
> Lo que quiero es que en lugar de abrir esta versión de "sólo lectura"
poner
> un mensaje que avise del caso. Por tanto necesito alguna instrucción que
> detecte si el archivo de BD está abierto por otro puesto.
> Agradeceré alguna solución
>
> Saludos
>
> Juan Carlos Pérez
> Asturias-España
>
>
>


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