David está administrando una elección para una sociedad profesional y la lista de votantes elegibles es una hoja de trabajo. Hay aproximadamente 1,200 votantes elegibles, por lo que la impresión tiene más de veinte páginas. David tiene un pie de página con el número de página, lo cual es útil, pero sería genial si pudiera tener, en el encabezado de cada página, el nombre de la página y el apellido en la página.

En Excel no hay una forma nativa de hacer esto. Sin embargo, es relativamente fácil hacerlo en Word, por lo que una solución es pegar los nombres ordenados en un documento de Word y luego agregar el encabezado deseado que muestra los nombres.

Si bien esto puede funcionar, resulta complicado asegurarse de que la versión de Word de la lista siempre esté sincronizada con la versión de Excel de la lista, y viceversa.

Si decide que desea mantener una única versión de la lista de votantes en Excel, la mejor manera de abordar el problema es usar una macro para insertar el nombre y apellido en el encabezado. El código para dicha macro, obviamente, debería adaptarse al diseño de los datos en su hoja de trabajo. La siguiente macro asume que los nombres están en las columnas A a C, con los apellidos (los que desea usar para los encabezados) están en la columna C.

Sub PrintNamesInHeader()

Dim iPages As Integer     Dim iPage As Integer     Dim iHorPgs As Integer     Dim iHP As Integer     Dim iHPNext As Integer     Dim iCol As Integer     Dim iColLast As Integer     Dim lRow As Long     Dim lRowLast As Long     Dim sPrtArea As String

iCol = 1        'Col A     iColLast = 3    'Col C     With ActiveSheet         iPages = ExecuteExcel4Macro("Get.Document(50)")

iHorPgs = .HPageBreaks.Count + 1         sPrtArea = .PageSetup.PrintArea

For iPage = 1 To iPages             iHP = ((iPage - 1) Mod iHorPgs)

iHPNext = iHP + 1             If iHP = 0 Then                 If sPrtArea = "" Then                     lRow = 1                 Else                     lRow = .Range(sPrtArea).Cells(1).Row                 End If             Else                 lRow = .HPageBreaks(iHP).Location.Row             End If             If iHPNext > .HPageBreaks.Count Then                 lRowLast = .Cells(lRow, iColLast).End(xlDown).Row             Else                 lRowLast = .HPageBreaks(iHPNext).Location.Row - 1             End If             .PageSetup.LeftHeader = .Cells(lRow, iCol).Value & _               " - " & .Cells(lRowLast, iColLast)

.PrintOut From:=iPage, To:=iPage, preview:=True         Next     End With End Sub

Cuando ejecuta la macro, recorre cada página de la hoja de trabajo. Los encabezados se establecen para la página, luego se imprime la página única y luego se examina y procesa la página siguiente.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (9543) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-First_and_Last_Names_in_a_Page_Header [Nombres y apellidos en un encabezado de página].