¿ Existe un evento que se ejecute justo antes de guardar un fichero Excel ? (BeforeSave no sirve)

09/11/2005 - 10:15 por Luis Garcia | Informe spam
Hola al grupo:

Necesito justo antes de que se guarde un fichero excel guardar una
'informacion', y no se puede hacer,
al menos, no lo he conseguido en XL2000.

Evento BeforeSave(SaveAsUi = False)
se ejecuta justo antes de guardar
!!! Ok !!!

Evento BeforeSave(SaveAsUI = True)
se ejecuta antes de preguntar al usuario el 'SaveAS', el cual puede
pulsar Cancelar
!!! No me sirve !!!
SI pulsa Cancelar => guardo información FALSA (el fichero no se ha
grabado)
SI guarda con otro nombre => no tengo ese nombre (no lo puedo
guardar en la 'informacion')

Ademas, al cerrar el fichero (por menú o ventana), no ejecuta el BeforeSave,
sino que se ejecuta el BeforeClose.

Evento BeforeClose()
se ejecuta antes de preguntar al usuario "¿Grabar? Si, No, Cancel", por
lo que estoy igual antes.

¿ Alguna idea para hacer un 'BeforeSave real' o me he dejado algo?

Saludos

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
09/11/2005 - 23:19 | Informe spam
hola, Luis !

Necesito justo antes de que se guarde un fichero excel guardar una 'informacion'
y no se puede hacer,al menos, no lo he conseguido en XL2000.
Evento BeforeSave(SaveAsUi = False) se ejecuta justo antes de guardar Ok !!!
Evento BeforeSave(SaveAsUI = True) se ejecuta antes de preguntar al usuario el 'SaveAS', el cual puede pulsar Cancelar
No me sirve !!!
SI pulsa Cancelar => guardo informacion FALSA (el fichero no se ha grabado)
SI guarda con otro nombre => no tengo ese nombre (no lo puedo guardar en la 'informacion')
Ademas, al cerrar el fichero (por menú o ventana), no ejecuta el BeforeSave, sino que se ejecuta el BeforeClose.
Evento BeforeClose() se ejecuta antes de preguntar al usuario "¿Grabar? Si, No, Cancel", por lo que estoy igual antes.
Alguna idea para hacer un 'BeforeSave real' o me he dejado algo?



1) el evento '_beforesave' ES -precisamente- el que 'ocurre' JUSTO ANTES de que un archivo sea 'guardado' [sin embargo]...
a) el usuario puede 'cancelar' [a voluntad] si continua o no la grabacion [tal como ya lo has comprobado]
b) puede ser 'disparado' -al menos- de tres formas...
1) al cerrar el libro [o la sesion] SIEMPRE Y CUANDO el archivo hubiera 'sufrido modificaciones' <= OJO
2) si es el usuario quien directamente ejecuta un comando de guardado [menus, atajo, boton de herramientas o macro]
3) si el usuario [o una macro] hace un 'guardar como' [para cambiar el nombre y/o la ubicacion de 'ese' archvo]
c) ya Manuel Romero te ha explicado el significado del SaveAsUI = True/false] :))

2) [aparentemente] lo que necesitas NO es un 'beforesave'... sino un 'aftersave' [que no existe... hay que 'fabricarlo'] ;)
-> por lo que... [definitivamente]...si te has 'dejado algo' :))
[p.e.] en la informacion que necesitas guardar [una vez 'confirmado' que el archvo SI sa va a guardar... o SE GUARDO]...
-> que 'pinta' tiene el -posible- 'nuevo' nombre del archivo [en caso de que el usuario haga un 'guardar como...'] ???

3) si necesitas 'administrar' algun procedimiento que 'dependa' de un guardado 'real y efectivo'...
visita en la pagina de John Walkenbach...
-> Handling the Workbook BeforeClose Event: http://j-walk.com/ss/excel/tips/tip78.htm

4) para conocer el orden en que los eventos son 'disparados'... visita la pagina de Charles H. Pearson (Chip Pearson)...
-> Event Procedures In Microsoft Excel97: http://www.cpearson.com/excel/events.htm
en el ultimo tercio de esa pagina encuentras una seccion llamada: Order Of Event Procedures

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Luis Garcia
10/11/2005 - 12:49 | Informe spam
Hola Manuel:

Por ahi van los tiros que estoy siguiendo, pero me encuentro que yo quiero
que el SaveAS siga funcionando igual, no lo quiero controlar yo. Por eso he
puesto otro mensaje con esa pregunta.

Lo que he hecho es muy parecido a lo que comentas, he creado un metodo
MySAVE() y alli controlo todas las opciones de grabar (excepto el SaveAS).
Este metodo lo llamo desde BeforeSave y BeforeClose, y ademas devuelvo
un valor Boolean para el parametro CANCEL de los metodos Before*.

Gracias por la respuesta-

Saludos

"Manuel Romero" <mailto:m.r.o.m.e.r.o.p@@@@h.o.t.m.a.i.lc.o.m> escribió
en...
En el evento BeforeClose, guarda el documento y asi disparas el
BeforeSave.

Por otro lado, cuando SaveAsUI as true, primero asigna EnableEvents a
false para no entrar en un ciclo infinito, graba el documento como tu
quieres y asigna la propiedad Saved a true para que no pregunte

> Hola al grupo:
>
> Necesito justo antes de que se guarde un fichero excel guardar una
> 'informacion', y no se puede hacer,
> al menos, no lo he conseguido en XL2000.
>
> Evento BeforeSave(SaveAsUi = False)
> se ejecuta justo antes de guardar
> !!! Ok !!!
>
> Evento BeforeSave(SaveAsUI = True)
> se ejecuta antes de preguntar al usuario el 'SaveAS', el cual puede
> pulsar Cancelar
> !!! No me sirve !!!
> SI pulsa Cancelar => guardo información FALSA (el fichero no se


ha
> grabado)
> SI guarda con otro nombre => no tengo ese nombre (no lo puedo
> guardar en la 'informacion')
>
> Ademas, al cerrar el fichero (por menú o ventana), no ejecuta el


BeforeSave,
> sino que se ejecuta el BeforeClose.
>
> Evento BeforeClose()
> se ejecuta antes de preguntar al usuario "¿Grabar? Si, No, Cancel",


por
> lo que estoy igual antes.
>
> ¿ Alguna idea para hacer un 'BeforeSave real' o me he dejado algo?
>
> Saludos


Respuesta Responder a este mensaje
#3 Luis Garcia
10/11/2005 - 12:58 | Informe spam
"Héctor Miguel" escribió en...
hola, Luis !



Hola Hector. [ ... corto parte del mensaje ...]

2) [aparentemente] lo que necesitas NO es un 'beforesave'... sino un


'aftersave' [que no existe... hay que 'fabricarlo'] ;)

Casi, pero no. Porque la informacion que quiero grabar, la quiero grabar 'en
el propio fichero Excel'.

Necesito un BeforeSave, pero justo-justo antes de que empieze a grabar
realmente el fichero.

-> por lo que... [definitivamente]...si te has 'dejado algo' :))
[p.e.] en la informacion que necesitas guardar [una vez


'confirmado' que el archvo SI sa va a guardar... o SE GUARDO]...
-> que 'pinta' tiene el -posible- 'nuevo' nombre del archivo [en


caso de que el usuario haga un 'guardar como...'] ???

Para explicar rapidamente lo que quiero hacer, es crear una especie de
'auditoria' o 'trazabilidad' del fichero. Por ejemplo, cada vez que se
guarda el fichero, grabar un registro en una hoja del propio libro: nombre
del usuario, fecha/hora y path/nombre del fichero.
Si ese fichero a sido copiado, guardado como, etc, yo puedo averiguar 'su
ciclo de vida'.

Como comento en el otro mensaje a Manuel, lo tengo 'controlado' (BeforeSave,
BeforeClose), pero quiero dejar el metodo SaveAS tal y como esta en Excel,
con todas sus opciones, por eso la otra pregunta en el otro hilo.

En este hilo intento buscar 'otra posible' solucion al problema :)

Saludos
Respuesta Responder a este mensaje
#4 Laura \( _ \)
11/11/2005 - 09:10 | Informe spam
LUIS GARCIA????????
liverpool ?????

<3 <3 <3 <3

@}--
Laura. :)


"Do you know where you're going to?"
"Luis Garcia" wrote in message
news:
Hola al grupo:

Necesito justo antes de que se guarde un fichero excel guardar una
'informacion', y no se puede hacer,
al menos, no lo he conseguido en XL2000.

Evento BeforeSave(SaveAsUi = False)
se ejecuta justo antes de guardar
!!! Ok !!!

Evento BeforeSave(SaveAsUI = True)
se ejecuta antes de preguntar al usuario el 'SaveAS', el cual puede
pulsar Cancelar
!!! No me sirve !!!
SI pulsa Cancelar => guardo información FALSA (el fichero no se ha
grabado)
SI guarda con otro nombre => no tengo ese nombre (no lo puedo
guardar en la 'informacion')

Ademas, al cerrar el fichero (por menú o ventana), no ejecuta el


BeforeSave,
sino que se ejecuta el BeforeClose.

Evento BeforeClose()
se ejecuta antes de preguntar al usuario "¿Grabar? Si, No, Cancel",


por
lo que estoy igual antes.

¿ Alguna idea para hacer un 'BeforeSave real' o me he dejado algo?

Saludos



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