Encabezado y pie de página en Excel con números romanos

Quizás uno de los principales inconvenientes para la mayoría de los usuarios principiantes de Excel es el tema de las impresiones dentro de la aplicación; aún más cuando lo que desean es trabajar con los encabezados o pies de página al momento de imprimir un documento desarrollado en Microsoft Excel.

Bajo esta premisa, aquí es necesario recordar algunos aspectos esenciales a la hora de imprimir hojas de cálculo. Por ejemplo, a diferencia de Microsoft Word que posee un solo cuerpo para el encabezado y uno para el pie de página; Excel posee tres de manera correspondiente para cada uno de ellos. Es decir: encabezado izquierdo, encabezado centro, encabezado derecho, pie de página izquierdo, pie de página centro, pie de página derecho.

Por otro lado, Excel de manera nativa limita las numeraciones de las páginas para las impresiones de los encabezados y/o pies de página a un formato que sólo acepta números naturales, es decir: {1, 2, 3, 4, 5, 6, Etc. Etc.}.

Entonces aquí la pregunta: ¿Qué debemos hacer para imprimir en los encabezados o pies de página una numeración que incluya números romanos? Muy simple: Utilizar una Macro que desarrolle esta tarea.

Es por ello por lo que me he tomado un tiempo para escribir esta Macro y compartirla a todo el conjunto de personas interesadas que buscan una solución a este problema.

La Macro en cuestión es la siguiente:

Sub Encabezado_PieDePagina_EnNumerosRomanos()
       Dim HojaActiva As Worksheet
       Dim NumeroPaginasHoja As Long
       Dim Indice As Long
       Dim NumeroReinicio As Long

       Set HojaActiva = ActiveSheet
       NumeroPaginasHoja = HojaActiva.PageSetup.Pages.Count
    
       If NumeroPaginasHoja = 0 Then
              MsgBox "No hay nada para imprimir.", vbInformation + vbOKOnly, "Alerta"
       Else
              NumeroReinicio = Application.InputBox _
                                        (Prompt:="• Un número diferente de uno reinicia la numeración en ese número." & _
                                        vbNewLine & "• Un número igual a uno inicia la numeración en uno." & vbNewLine & _
                                        vbNewLine & "Ingrese un valor numérico... (" & NumeroPaginasHoja & _
                                        " páginas detectadas)", Title:="Reiniciar la numeración en...", Default:=1, Type:=1)
        
              If NumeroReinicio = 0 Then
                     Exit Sub
              Else
                     NumeroReinicio = VBA.Abs(NumeroReinicio)
                     Application.ScreenUpdating = False
            
                     For Indice = 1 To NumeroPaginasHoja
                     Application.StatusBar = "Imprimiendo página " & Indice & " de " & NumeroPaginasHoja
                
                     With HojaActiva
                       '//** CABECERA IZQUIERDA **// Use el apostrofe (') para no ejecutar la línea siguiente
                       .PageSetup.LeftHeader = "Página " & Application.WorksheetFunction.Roman(NumeroReinicio, 0)
                    
                       '//** CABECERA CENTRO **// Use el apostrofe (') para no ejecutar la línea siguiente
                       .PageSetup.CenterHeader = "Página " & Application.WorksheetFunction.Roman(NumeroReinicio, 0)
                    
                       '//** CABECERA DERECHA **// Use el apostrofe (') para no ejecutar la línea siguiente
                       .PageSetup.RightHeader = "Página " & Application.WorksheetFunction.Roman(NumeroReinicio, 0)
                    
                       '//** PIE DE PÁGINA IZQUIERDO **// Use el apostrofe (') para no ejecutar la línea siguiente
                       .PageSetup.LeftFooter = "Página " & Application.WorksheetFunction.Roman(NumeroReinicio, 0)
                    
                       '//** PIE DE PÁGINA CENTRO **// Use el apostrofe (') para no ejecutar la línea siguiente
                       .PageSetup.CenterFooter = "Página " & Application.WorksheetFunction.Roman(NumeroReinicio, 0)
                    
                       '//** PIE DE PÁGINA DERECHO **// Use el apostrofe (') para no ejecutar la línea siguiente
                       .PageSetup.RightFooter = "Página " & Application.WorksheetFunction.Roman(NumeroReinicio, 0)
                    
                       .ExportAsFixedFormat Type:=xlTypePDF, _
                           Filename:=ActiveWorkbook.Path & Application.PathSeparator & "Pagina " & Indice & ".pdf", _
                           IgnorePrintAreas:=True, _
                           From:=Indice, _
                           To:=Indice, _
                           OpenAfterPublish:=False
                
                     End With
                           NumeroReinicio = NumeroReinicio + 1
                     Next Indice
            
                  Application.StatusBar = False
                  HojaActiva.PageSetup.CenterHeader = ""
                  HojaActiva.PageSetup.CenterFooter = ""
                  Application.ScreenUpdating = True
              End If
       End If
End Sub

¿Qué hace la Macro?

La Macro calcula el número de páginas que se encuentran en la hoja activa de un libro de Excel al momento de ejecutarla. Nota: un libro de Excel puede contener múltiples hojas, y una hoja puede contener múltiples páginas.

Seguidamente en la interfaz de usuario se muestra un cuadro de diálogo que le permitirá introducir el comienzo de la numeración; en caso de que se requiera comenzar esta última con un número diferente de uno debe especificarlo explícitamente en el diálogo. Nota: por default la numeración arranca en uno, si quiere comenzar con un valor diferente de uno especifíquelo en el diálogo con un valor numérico natural; por ejemplo: {1, 10, 20, 25, Etc.}.


Al dar clic en el comando Aceptar del cuadro de diálogo la Macro comenzará a exportar cada página de la hoja activa a ficheros PDF con la numeración en romano (ya sea en cualquiera de los encabezados o pies de página) dentro de la ruta actual donde se encuentre almacenado el libro de Excel.

Nota 1: en la barra de estado de la aplicación se muestra el progreso de cada página exportada.

Nota 2: es recomendable antes de exportar, guardar el libro de Excel en una subcarpeta para prevenir que las páginas en PDF queden desperdigadas en una ubicación no deseada.

Nota 3: utilice una herramienta online o desktop para unir los PDF como desee.

¿Y donde aparecen los números romanos?

Por default la macro imprime los números romanos en todas las áreas correspondientes al encabezado y/o pie de página de las páginas que se exporten de la hoja activa del libro de Excel.

Si usted quiere imprimir los números romanos en una parte específica del encabezado y/o pie de página solo debe comentar las líneas de código donde NO quiere que aparezcan dichos números.

Por ejemplo, en el código siguiente se imprime únicamente los números romanos del encabezado centro y el pie de página centro de cada página que se exporte a PDF.


Descargue una copia del libro de Excel con el código y úselo a su conveniencia. Referencia del archivo: Workbook294.