# Historial de cambios realizados en una hoja de excel...



## gusmario2011

Hola...

les traigo una tarea algo complicada... nececito una macro que me permita guardar todos los cambios realizados en una base de datos (historial), buscando en la red encontre algo muy interezante, que me cuenta que el excel 2007 tiene esa opcion en la pestaña "review", seleccionamos la opcion compartir y ahi podemos activar el historial de cambios, pero hay un inconveniente me niega la entrada a el visualbasic del excel, asi que me dirijo a ustedes los expertos en busca de soporte tecnico, ya sea con mas informacion de esto o con una pequeña macro que me guarde los cambios realiados en un rango "A3:M600" en una hoja llamada "historial", requiero que coloque la informacion descendiente con fecha, celda, el dato que se ingreso o borro, hora, etc...

Aguien que me auxilie por favor!!!...


----------



## gusmario2011

cgcamal, perdona podrias ayudarme con este tema?, si desconoce del tema lo entiendo o si puede ayudarme con una macro?...

gracias...


----------



## Osvaldo Palmeiro

Hola gusmario.

A ver si esto le puede ayudar.

1. Crear una hoja de cálculo y registrar el nombre historial
2. Poner este código en el módulo de Esta_pasta_de_trabajo




		Code:
__


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim LR As Long
If Sh.Name = "historial" Then Exit Sub
Application.EnableEvents = False
With Sheets("historial")
    LR = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("A" & LR + 1).Value = Format(Now, "dd-mm-yy hh:mm:ss")
    .Range("B" & LR + 1).Value = Sh.Name
    .Range("C" & LR + 1).Value = Target.Address(False, False)
    .Range("D" & LR + 1).Value = Target.Value
    .Range("E" & LR + 1).Value = Environ("USERNAME")
End With
Application.EnableEvents = True
End Sub

si desea limitar los cambios históricos en el rango de "A3: M600", luego cambie la línea del codigo para:




		Code:
__


If Sh.Name = "historial" Or Intersect(Target, Range("A3:M600")) Is Nothing Then Exit Sub

la historia de los cambios en las hojas de cálculo se dará a conocer en la hoja historial:
fecha y la hora en la columna A
nombre de la hoja de trabajo en B
dirección de la celda en la C
nuevo contenido de la celda en la D
usuario en E


----------



## gusmario2011

Excelente.

Gracias, funciona excelente, gracias Osvaldo, gran aporte, me has ayudado mucho...


----------



## gusmario2011

Que tal Huercos!...

Huercos = Plebes = Bukys = escuincles: Chamacos, Niños, Muchachos, Chicos "Mexico".

Chivolos: Niños "Peru".

Criankas: Niños "Brasil".

Bueno.... Pasa lo siguiente:

El codigo funciona excelente, pero ahora me piden que cada 3 meses, se pasen los datos con mas de 3 meses de antihuedad a una hoja que se llame "archivo muerto", e irse acumulando ahi, obvio que estos ya no deben de estar en el historial. Osvaldo podria ayudarme con esto?


----------



## Malosii

Hola ,por casualidad encontre tu peticion sobre el historial de cambios que solicitaste ,y es exactamente ´la ayuda que ando buscando ,nomas que no entendi las intruciones y codigos que te mostraron ,no me podria decir como introducir ese codigo o como usarlo por favor ,que tambien lo necesito mucho ,ojala y puedas ayudarme .                                                                                                                                                                                                                                                                                                        





Osvaldo Palmeiro said:


> Hola gusmario.
> 
> A ver si esto le puede ayudar.
> 
> 1. Crear una hoja de cálculo y registrar el nombre historial
> 2. Poner este código en el módulo de Esta_pasta_de_trabajo
> 
> 
> 
> 
> Code:
> __
> 
> 
> Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
> Dim LR As Long
> If Sh.Name = "historial" Then Exit Sub
> Application.EnableEvents = False
> With Sheets("historial")
> LR = .Range("A" & Rows.Count).End(xlUp).Row
> .Range("A" & LR + 1).Value = Format(Now, "dd-mm-yy hh:mm:ss")
> .Range("B" & LR + 1).Value = Sh.Name
> .Range("C" & LR + 1).Value = Target.Address(False, False)
> .Range("D" & LR + 1).Value = Target.Value
> .Range("E" & LR + 1).Value = Environ("USERNAME")
> End With
> Application.EnableEvents = True
> End Sub
> 
> si desea limitar los cambios históricos en el rango de "A3: M600", luego cambie la línea del codigo para:
> 
> 
> 
> 
> Code:
> __
> 
> 
> If Sh.Name = "historial" Or Intersect(Target, Range("A3:M600")) Is Nothing Then Exit Sub
> 
> la historia de los cambios en las hojas de cálculo se dará a conocer en la hoja historial:
> fecha y la hora en la columna A
> nombre de la hoja de trabajo en B
> dirección de la celda en la C
> nuevo contenido de la celda en la D
> usuario en E


----------



## Osvaldo Palmeiro

Hola, Malosii.
El código anterior se debe instalar en el módulo EstaPasta_de_trabajo en el editor de VBA.
En primer lugar, asigne el nombre de "historial" (sin las comillas) a una hoja de cálculo vacía de su Pasta

Para instalar el código:
1. Copie el código de acá
2. en Excel, presione Alt + F11 para abrir el editor de VBA
3. en el lado izquierdo de la pantalla, haga doble clic en EstaPasta
4. Pega el código en la ventana en blanco que se abrirá
5. hecho! Alt + Q para volver a la hoja de cálculo y probarlo

operación - el código registrará automáticamente en la hoja de cálculo denominada "historial" todos los cambios en cualquier hoja de cálculo dela Pasta (excepto en la "historia")


----------



## Malosii

Disculpa la pregunta pero sabes por que me marca (historial es un nombre reservado?                                                                                                                                





Osvaldo Palmeiro said:


> Hola, Malosii.
> El código anterior se debe instalar en el módulo EstaPasta_de_trabajo en el editor de VBA.
> En primer lugar, asigne el nombre de "historial" (sin las comillas) a una hoja de cálculo vacía de su Pasta
> 
> Para instalar el código:
> 1. Copie el código de acá
> 2. en Excel, presione Alt + F11 para abrir el editor de VBA
> 3. en el lado izquierdo de la pantalla, haga doble clic en EstaPasta
> 4. Pega el código en la ventana en blanco que se abrirá
> 5. hecho! Alt + Q para volver a la hoja de cálculo y probarlo
> 
> operación - el código registrará automáticamente en la hoja de cálculo denominada "historial" todos los cambios en cualquier hoja de cálculo dela Pasta (excepto en la "historia")


----------



## Osvaldo Palmeiro

Pruebe a sustituir el nombre de "historial", por ejemplo, escriba "alligator".
No te olvides de sustituir también el nombre en el código.


----------



## Malosii

Te agradezco mucho la informacion ya pude trabajar con esta formula y esta muy padre  saludos



Osvaldo Palmeiro said:


> Pruebe a sustituir el nombre de "historial", por ejemplo, escriba "alligator".
> No te olvides de sustituir también el nombre en el código.


----------



## gusmario2011

Hola...

les traigo una tarea algo complicada... nececito una macro que me permita guardar todos los cambios realizados en una base de datos (historial), buscando en la red encontre algo muy interezante, que me cuenta que el excel 2007 tiene esa opcion en la pestaña "review", seleccionamos la opcion compartir y ahi podemos activar el historial de cambios, pero hay un inconveniente me niega la entrada a el visualbasic del excel, asi que me dirijo a ustedes los expertos en busca de soporte tecnico, ya sea con mas informacion de esto o con una pequeña macro que me guarde los cambios realiados en un rango "A3:M600" en una hoja llamada "historial", requiero que coloque la informacion descendiente con fecha, celda, el dato que se ingreso o borro, hora, etc...

Aguien que me auxilie por favor!!!...


----------



## Antonio malonso

buenas noches amigos, estoy en aprietos. Encontré esta página y la veo muy interesante. Estoy trabajando un archivo de Excel 2010, y he tratado de aplicar este código para mi archivo y abrí la hoja nueva y le puse "bitácora", pegué el código que ustedes facilitan en Thisworkbook, y resulta  que me lanza errores, no reconoce el código y me dice: error de compilación, no se puede encontrar el proyecto o la biblioteca... no se qué estoy haciendo mal... ayúdenme please!!  Ah,, también se sombrea en amarrillo desde el inicio del código, y m pone sombreado la palabra FORMAT. No soy muy experto en códigos... algo le hago pero ´con ayuda, solo soy un fiasco... jeje.  Solicito su cooperación, por favor. 
Antonio

Disculpen, olvidé decirles que sí cambié el código con el nombre de la hoja "bitácora", igualito, pero no anda. HELP!!


----------

