Auto_Save

01/04/2009 - 14:26 por Juan Carlos | Informe spam
Hola, necesitaria saber si existe, del mismo modo que auto_open o auto-close,
una macro que se ejecute automaticamente al momento de intentar guardar un
archivo.
Esto lo necesito para poder validar ciertas condiciones de unas hojas.
Por ejemplo, en estas hojas no se pueden eliminar columnas. Si se elimina
alguna existe un riesgo de que no funcionen ciertas formulas. Para asegurarme
que no se arruine el funcionamiento de la planilla verifico que no se haya
eliminado ninguna columna en las hojas correspondientes y esta verificacion
la quiero hacer antes de guardar de modo de impedir eventualmente la
grabacion.
Espero haber sido claro.
Gracias
JC

Preguntas similare

Leer las respuestas

#1 Juan Español
01/04/2009 - 14:54 | Informe spam
Hola Juan Carlos:

El evento que se produce antes de guardar un libro es:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
'Aqui el código de comprobaciones y acciones.
End Sub

Este evento es del objeto ThisWorkbood.

Pero ¿cómo vas a comprobar si se ha borrado alguna columna?, salvo que lo
que estés diciendo sea "compruebo que en la columna HP v.g. haya tal dato"

Saludos.-

"Juan Carlos" escribió en el mensaje
de noticias news:
Hola, necesitaria saber si existe, del mismo modo que auto_open o
auto-close,
una macro que se ejecute automaticamente al momento de intentar guardar un
archivo.
Esto lo necesito para poder validar ciertas condiciones de unas hojas.
Por ejemplo, en estas hojas no se pueden eliminar columnas. Si se elimina
alguna existe un riesgo de que no funcionen ciertas formulas. Para
asegurarme
que no se arruine el funcionamiento de la planilla verifico que no se
haya
eliminado ninguna columna en las hojas correspondientes y esta
verificacion
la quiero hacer antes de guardar de modo de impedir eventualmente la
grabacion.
Espero haber sido claro.
Gracias
JC

Respuesta Responder a este mensaje
#2 Juan Carlos
01/04/2009 - 15:56 | Informe spam
Lo que hago es poner un valor de 1 a 256 en cada celda de la fila "N" (por ej
10000) y luego comparo
FOR H=1 to 256
IF CELLS(10000,H).VALUE<>H THEN MSGBOX("ERROR"):END
NEXT

Respecto de lo anterior, en que hoja hay que poner el codigo que mandaste ??



"Juan Español" escribió:

Hola Juan Carlos:

El evento que se produce antes de guardar un libro es:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
'Aqui el código de comprobaciones y acciones.
End Sub

Este evento es del objeto ThisWorkbood.

Pero ¿cómo vas a comprobar si se ha borrado alguna columna?, salvo que lo
que estés diciendo sea "compruebo que en la columna HP v.g. haya tal dato"

Saludos.-

"Juan Carlos" escribió en el mensaje
de noticias news:
> Hola, necesitaria saber si existe, del mismo modo que auto_open o
> auto-close,
> una macro que se ejecute automaticamente al momento de intentar guardar un
> archivo.
> Esto lo necesito para poder validar ciertas condiciones de unas hojas.
> Por ejemplo, en estas hojas no se pueden eliminar columnas. Si se elimina
> alguna existe un riesgo de que no funcionen ciertas formulas. Para
> asegurarme
> que no se arruine el funcionamiento de la planilla verifico que no se
> haya
> eliminado ninguna columna en las hojas correspondientes y esta
> verificacion
> la quiero hacer antes de guardar de modo de impedir eventualmente la
> grabacion.
> Espero haber sido claro.
> Gracias
> JC
>


Respuesta Responder a este mensaje
#3 Juan Español
01/04/2009 - 16:52 | Informe spam
Juan Carlos a mí no me gusta la forma como controlas el que no te cambien lo
que no quieres que te cambien, pero como te veo tan seguro...

Te pongo el código que haría que.. si el valor de la celda K1 de la hoja
Hoja1 fuese distinto de 25, el libro no se guardase.
Adáptalo a tu forma de controlar..

Este código como quise indicarte antes, controla el evento
Workbook_BeforeSave que es un evento del objeto ThisWorkbook, es decir hay
que ponerlo en el código del libro, no de ninguna hoja.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If Worksheets("Hoja1").Range("K1") <> 25 Then
MsgBox "El libro no se guardará"
ActiveWorkbook.Saved = True
Else
ActiveWorkbook.Save
End If
End Sub



"Juan Carlos" escribió en el mensaje
de noticias news:
Lo que hago es poner un valor de 1 a 256 en cada celda de la fila "N" (por
ej
10000) y luego comparo
FOR H=1 to 256
IF CELLS(10000,H).VALUE<>H THEN MSGBOX("ERROR"):END
NEXT

Respecto de lo anterior, en que hoja hay que poner el codigo que mandaste
??



"Juan Español" escribió:

Hola Juan Carlos:

El evento que se produce antes de guardar un libro es:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
'Aqui el código de comprobaciones y acciones.
End Sub

Este evento es del objeto ThisWorkbood.

Pero ¿cómo vas a comprobar si se ha borrado alguna columna?, salvo que lo
que estés diciendo sea "compruebo que en la columna HP v.g. haya tal
dato"

Saludos.-

"Juan Carlos" escribió en el
mensaje
de noticias news:
> Hola, necesitaria saber si existe, del mismo modo que auto_open o
> auto-close,
> una macro que se ejecute automaticamente al momento de intentar guardar
> un
> archivo.
> Esto lo necesito para poder validar ciertas condiciones de unas hojas.
> Por ejemplo, en estas hojas no se pueden eliminar columnas. Si se
> elimina
> alguna existe un riesgo de que no funcionen ciertas formulas. Para
> asegurarme
> que no se arruine el funcionamiento de la planilla verifico que no se
> haya
> eliminado ninguna columna en las hojas correspondientes y esta
> verificacion
> la quiero hacer antes de guardar de modo de impedir eventualmente la
> grabacion.
> Espero haber sido claro.
> Gracias
> JC
>


Respuesta Responder a este mensaje
#4 Juan Carlos
01/04/2009 - 17:34 | Informe spam
Gracias por la ayuda y de paso aca va otra.

Que forma de controlar tendrias vos?
Me gustaria conocer otra forma.

Gracias de nuevo
JC


"Juan Español" escribió:

Juan Carlos a mí no me gusta la forma como controlas el que no te cambien lo
que no quieres que te cambien, pero como te veo tan seguro...

Te pongo el código que haría que.. si el valor de la celda K1 de la hoja
Hoja1 fuese distinto de 25, el libro no se guardase.
Adáptalo a tu forma de controlar..

Este código como quise indicarte antes, controla el evento
Workbook_BeforeSave que es un evento del objeto ThisWorkbook, es decir hay
que ponerlo en el código del libro, no de ninguna hoja.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If Worksheets("Hoja1").Range("K1") <> 25 Then
MsgBox "El libro no se guardará"
ActiveWorkbook.Saved = True
Else
ActiveWorkbook.Save
End If
End Sub



"Juan Carlos" escribió en el mensaje
de noticias news:
> Lo que hago es poner un valor de 1 a 256 en cada celda de la fila "N" (por
> ej
> 10000) y luego comparo
> FOR H=1 to 256
> IF CELLS(10000,H).VALUE<>H THEN MSGBOX("ERROR"):END
> NEXT
>
> Respecto de lo anterior, en que hoja hay que poner el codigo que mandaste
> ??
>
>
>
> "Juan Español" escribió:
>
>> Hola Juan Carlos:
>>
>> El evento que se produce antes de guardar un libro es:
>>
>> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
>> Boolean)
>> 'Aqui el código de comprobaciones y acciones.
>> End Sub
>>
>> Este evento es del objeto ThisWorkbood.
>>
>> Pero ¿cómo vas a comprobar si se ha borrado alguna columna?, salvo que lo
>> que estés diciendo sea "compruebo que en la columna HP v.g. haya tal
>> dato"
>>
>> Saludos.-
>>
>> "Juan Carlos" escribió en el
>> mensaje
>> de noticias news:
>> > Hola, necesitaria saber si existe, del mismo modo que auto_open o
>> > auto-close,
>> > una macro que se ejecute automaticamente al momento de intentar guardar
>> > un
>> > archivo.
>> > Esto lo necesito para poder validar ciertas condiciones de unas hojas.
>> > Por ejemplo, en estas hojas no se pueden eliminar columnas. Si se
>> > elimina
>> > alguna existe un riesgo de que no funcionen ciertas formulas. Para
>> > asegurarme
>> > que no se arruine el funcionamiento de la planilla verifico que no se
>> > haya
>> > eliminado ninguna columna en las hojas correspondientes y esta
>> > verificacion
>> > la quiero hacer antes de guardar de modo de impedir eventualmente la
>> > grabacion.
>> > Espero haber sido claro.
>> > Gracias
>> > JC
>> >
>>
>>


Respuesta Responder a este mensaje
#5 Juan Español
01/04/2009 - 18:04 | Informe spam
Las celdas, columnas, filas, rangos, rangos_nombres, que quieras que sean
cambiables por los usuarios, desprotéjalos, y proteja la hoja con o sin
contraseña a su gusto, y al proteger la hoja configure lo que permite hacer
a los usuarios.

También recomiendo que en cada ámbito de acción del usuario, mediante
validación, controlar el input de datos, pues si estamos midiendo la altura
de los bomberos de ciudad en cm. para qué vamos a permitir que un usuario
pueda poner <150 o >250, luego vemos burradas cuando nos echamos a la cara
ciertos datos.

Y ya que me pongo, también me gusta ocultar las columnas que están a la
derecha de las necesarias y las columnas con cálculos intermedios que no
necesitan ser visionadas por los usuarios.

Tu mismo, decides lo que te gusta, te conviene...

"Juan Carlos" escribió en el mensaje
de noticias news:
Gracias por la ayuda y de paso aca va otra.

Que forma de controlar tendrias vos?
Me gustaria conocer otra forma.

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