Macro saltos de página

Necesito por favor una macro que después de ejecutarla revise un archivo y coloque los saltos de página siempre por encima de la fila que tiene datos en la columna A.

Esas columnas son partidas de un presupuesto, Si coincide ese salto de página entre una fila de partidas y otra de capítulos debería subir el salto de página por encima del capítulo. Siempre imprimo en A4 estos archivos.

Adjunto archivo para mejor comprensión, muchas gracias

https://www.dropbox.com/s/eobbrw8qw9k1m1c/excel.xlsx

1 respuesta

Respuesta
2

En la hoja va la macro para hacer los cortes de hoja, cada capítulo y en tamaño A4.

https://www.dropbox.com/s/x93swmdt8r9b40r/excel%20dam.xlsm

Prueba y me comentas.

Saludos. Dante Amor
Si es lo que necesitas.

Hola, la he probado e inserta bien los saltos por encima de los capítulos pero inserta otros saltos en filas que no me viene bien, Los saltos que no se sitúan por encima de un capítulo han de ir siempre justo por encima de la celda que tiene datos en la columna A, donde empieza una partida, no en mitad de la misma, no se si me explico bien, muchísimas gracias por tu dedicación.

Cambia la macro por esta

Sub salto()
'Por.DAM
una = False
t = 0
hoja = 750
n = 1
Application.ScreenUpdating = False
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.ResetAllPageBreaks
For i = 1 To Range("B" & Rows.Count).End(xlUp).Row
    If Cells(i, "B") = "Capítulo" Then
        If una Then
            ActiveSheet.HPageBreaks.Add Cells(i, "A")
            t = Rows(i).Top
            Set ActiveSheet.HPageBreaks(n).Location = Cells(i, "A")
            n = n + 1
        End If
        una = True
    End If
    dif = Rows(i).Top - t
    If dif >= hoja Then
        If Cells(i, "A") = "" Then
            For k = i To 1 Step -1
                If Cells(k, "A") <> "" Then
                    j = k
                    Exit For
                End If
            Next
        Else
            j = i
        End If
        ActiveSheet.HPageBreaks.Add Cells(j, "A")
        t = Rows(j).Top
        Set ActiveSheet.HPageBreaks(n).Location = Cells(j, "A")
        n = n + 1
    End If
Next
ActiveWindow.View = xlNormalView
Application.ScreenUpdating = True
End Sub

Saludos.Dante Amor

Te he enviado un correo.

No me llegó tu correo, ¿probaste esta última macro?

Yo la probé con tu archivo y me funcionan bien los cortes.

Te anexo el archivo con la nueva macro

https://www.dropbox.com/s/x93swmdt8r9b40r/excel%20dam.xlsm

No olvides finalizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas