Hola, ¿cómo estáis?
Yo sigo dándole al autoit y leyendo de vez en cuando lo que va surgiendo por aquí.
A ver si podéis orientarme un poco...
Necesito compartir un archivo Excel con varias personas y lo tengo que hacer a través de Dropbox.
El problema viene cuando 2 o más usuarios abren el mismo archivo, puesto que Dropbox lo permite (no bloquea el archivo a sólo lectura al abrirlo) y acabas con varias versiones del mismo archivo y teniendo que recomponerlo.
Como por narices de momento voy a tener que usar Dropbox, se me ocurre que podría cambiar el nombre del archivo a "en uso Nombre de archivo" cuando se abre usando Autoit o bloquearlo a sólo lectura". Pero antes de ponerme a ello quería comentarlo porque seguro que se os ocurre alguna idea mejor... yo sigo siendo novato!!!
Muchísimas gracias y saludos para todos,
qpongo
Compartir archivos Excel meidante Dropbox
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Compartir archivos Excel meidante Dropbox
No entiendo muy bien que tiene que ver autoit con la apertura compartida de un archivo excel colgado en dropbox. Si explicas un poco mejor que hace o pretendes que haga el script, y el problema que presenta, puede que lo comprenda mejor.
Por cierto, que yo sepa, si abren más de una vez en una red un archivo excel, el único que lo puede modificar es el primero que lo ha abierto. A los demás se le abren en modo lectura.
Saludos.
Por cierto, que yo sepa, si abren más de una vez en una red un archivo excel, el único que lo puede modificar es el primero que lo ha abierto. A los demás se le abren en modo lectura.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Compartir archivos Excel meidante Dropbox
Gracias Chefito por tu respuesta...
Efectivamente en una red el archivo se marca como abierto y no se puede abrir salvo en solo lectura.
Sin embargo si lo tienes en Dropbox (fuera de la red) si te deja abrirlo en modo escritura.
Para evitarlo de momento lo que estoy haciendo es al abrir el archivo renombrarlo:
Si se te ocurre alguna solución mejor y/o terminar el script para que grabe las modificaciones en excel, cierre el archivo y lo vuelva a renombrar me dices. Más que nada es el bucle infinito lo que no tengo claro como es, es decir dejar una ventanita con un Ok o Cerrar Actualizado Fin o como se quiera llamar que al pulsar termine grabando....
Gracias!!
qpongo
Efectivamente en una red el archivo se marca como abierto y no se puede abrir salvo en solo lectura.
Sin embargo si lo tienes en Dropbox (fuera de la red) si te deja abrirlo en modo escritura.
Para evitarlo de momento lo que estoy haciendo es al abrir el archivo renombrarlo:
Código: Seleccionar todo
#include <GUIConstants.au3>
#include <Excel.au3>
;Elegir el archivo a abrir
Local $message = "Por favor" &@UserName &"elige un archivo"
$var=FileOpenDialog($message, "C:\Dropbox\","(*.xls)",1)
If @error Then
MsgBox(4096,"","No se ha elegido el archivo")
Else
$var = StringReplace($var, "|", @CRLF)
MsgBox(4096,"","Has seleccionado: "&@CRLF &@CRLF& $var)
EndIf
FileMove($var,$var&" CUIDADO "&@UserName&" Lo está modificando.xls",0)
ShellExecute($var&" CUIDADO "&@UserName&" Lo está modificando.xls")
MsgBox(4096,"Atención","Modifica el archivo y cuando termines"&@CRLF &@CRLF & "VUELVE A PONER EL NOMBRE ORIGINAL")
;Hasta aquí lo hace bien todo y digamos que bien o mal el archivo cambia de nombre y avisa que está abierto.
;Pretendía más abajo hacer un bucle "infinito" y que el usuario pulsase Ok o similar al terminar de modificar...
;...para automáticamente guardar la hoja de cálculo, cerrarla y volver a llamarla con el nombre original. Está incompleto aún
While 1
Sleep(100)
WEnd
Gracias!!
qpongo
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Compartir archivos Excel meidante Dropbox
Mmmmmm.....es que el excel no está preparado para esas posibles situaciones.
Se me ocurre que una solución podría ser, antes de que se abra el archivo, comprobar si éste está abierto, por ejemplo, comprobando si se puede abrir en modo escritura. A partir de aquí, si está ejecutado (al abrirlo en modo escritura daría un error), mandar un mensaje al usuario de que en ese momento no se puede acceder al archivo porque está siendo usado por otro usuario, o algo así . Si te lo quieres currar un poco más, podrías hacer que el script fuese comprobado cada poco tiempo cuando el archivo es cerrado (el archivo no está en uso). Una vez que no se encuentre ejecutada, puedes darle acceso.
El código sería con la función $file=FileOpen("nombre del archivo",1) . Mírala en la ayuda. Para comprobar si está o no abierto, utiliza una condición if. $file=-1 si está abierto, y 1 si está cerrado.
Supongo que quieras algo así. Yo es que nunca he utilizado el dropbox, asi que no se como funciona.
Saludos.
Se me ocurre que una solución podría ser, antes de que se abra el archivo, comprobar si éste está abierto, por ejemplo, comprobando si se puede abrir en modo escritura. A partir de aquí, si está ejecutado (al abrirlo en modo escritura daría un error), mandar un mensaje al usuario de que en ese momento no se puede acceder al archivo porque está siendo usado por otro usuario, o algo así . Si te lo quieres currar un poco más, podrías hacer que el script fuese comprobado cada poco tiempo cuando el archivo es cerrado (el archivo no está en uso). Una vez que no se encuentre ejecutada, puedes darle acceso.
El código sería con la función $file=FileOpen("nombre del archivo",1) . Mírala en la ayuda. Para comprobar si está o no abierto, utiliza una condición if. $file=-1 si está abierto, y 1 si está cerrado.
Supongo que quieras algo así. Yo es que nunca he utilizado el dropbox, asi que no se como funciona.
Saludos.
Última edición por Chefito el 24 Abr 2014, 12:18, editado 1 vez en total.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Compartir archivos Excel meidante Dropbox
Muchas gracias Chefito.
Me resultará muy útil tu idea no sé si para esta situación exactamente pero desde luego para problemas parecidos.
qpongo
Me resultará muy útil tu idea no sé si para esta situación exactamente pero desde luego para problemas parecidos.
qpongo