Hacer backup de un archivo y empezar de cero manteniendo las fórmulas

Tengo un excel el cual es enorme, y deseo iniciar en uno de 0.

Existe la forma de eliminar toda la data de años anteriores y colocarlas en un backup. ¿Y dejar solo el año actual?

Se deben mantener las fórmulas y toda la estructura del excel. Tanto el copiado como el actual.

Existe forma de realizarlo.?

1 respuesta

Respuesta
1

No hay un modo único para realizar ésto. Dependerá de lo que necesites borrar o conservar en cada hoja.

Generalmente, si los libros deben empezar de 0 al inicio de cada año, les sugiero que guarden una copia vacía. Y esa será la que se comenzará a utilizar el 1/1 de cada año. Quizás también tengas que agregar una macro para volcar algunos datos que se fueron generando durante el año, como nuevas listas o saldos.... Depende del contenido de cada libro.

Para borrar ahora un libro terminado, estos pueden ser los pasos.

1- Guardar una copia final (identificarla con la fecha correspondiente, por ej: 31-12-2021)

2- Guardarlo como libro de inicio, por ej: 01-01-2022. Y en este libro desarrollar/ejecutar el código de limpieza. Dejo una idea a continuación.

Lo que hago es eliminar filas utilizadas manteniendo solo la primera de cada hoja para conservar formatos, fórmulas, etc. Esto dependerá de cada modelo de hoja. Si deseas mantener algunas filas de datos por la fecha, podrías hacer un filtrado (por ej con fecha anterior a 2022) y borrar solo las celdas visibles.

Y como al eliminar filas se recalcula la hoja paso el modo de cálculo a manual y lo vuelvo a automático al finalizar el proceso.

'modo de cálculo en manual para evitar el recálculo.
Application.Calculation = xlCalculationManual
'se procede a limpiar las hojas
For Each sh In Sheets
    'instrucciones comunes a todas las hojas
    With sh
       'hacer visible la hoja, seleccionarla y desprotegerla
        If .Visible = False Then .Visible = True
        .Select: .Unprotect
        'encontrar el fin de rango
        filx = .UsedRange.Rows.Count
    End With
    If sh.Name = "MOVIMIENTOS" Then
        With sh
            'si hubo filas utilizadas se limpia de contenido la primera y el resto se elimina
            If filx > 7 Then .Range("A8:AJ" & filx).EntireRow.Delete
            .Range("A7:AD7").ClearContents
        End With
    ElseIf sh.Name = "COBRANZAS" Then
        With sh
            'si hubo filas utilizadas se limpia de contenido la primera y el resto se elimina
            If filx > 5 Then .Range("A6:N" & filx).EntireRow.Delete
            .Range("A5:N5").ClearContents
        End With
    'Elseif      'otras hojas
    End If
    sh.Protect 'agregar clave y opciones de protecci´n
Next sh
'volver a cálculo automático
Application.Calculation = xlCalculationAutomatic

Espero te sirva la sugerencia. No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas