Crear una caja para encabezados

es posible crear una macro que me pregunte que encabezado quiero poner a las hojas de un libro?

1 respuesta

Respuesta
1

Esta puede ser una opción:

En el Editor, insertá un módulo y allí copiá esto:

Sub encabezados()
'por Elsamatilde
encabe = InputBox("Ingresa texto para el encabezado")
If encabe <> "" Then
With ActiveSheet.PageSetup
.LeftHeader = encabe 'encabezado superior izquierdo
End With
End If
End Sub

Si tenés una rutina de impresión deberás llamar primero a esta con : Call encabezados

También podes llamarla en el evento BeforePrint del objeto ThisWorkbook, así se ejecuta para cada hoja que imprimas.

Gracias Elsamatilde pero como hago para que en la rutina de impresiónno me salte el inputbox en cada hoja. la rutina es esta, aunque supongo que podría ser mas sencilla.

Application.ScreenUpdating = FalseSheets("CONVOYVUELTA").ActivateIf Range("b4") = "" ThenElseSheets("CONVOYVUELTA").PrintOutEnd IfSheets("busVUELTA").ActivateIf Range("b4") = "" ThenElseSheets("busVUELTA").PrintOutEnd IfSheets("barcoVUELTAm").ActivateIf Range("b4") = "" ThenElseSheets("barcoVUELTAm").PrintOutEnd IfSheets("barcoVUELTAc").ActivateIf Range("b4") = "" ThenElseSheets("barcoVUELTAc").PrintOutEnd IfSheets("avionVUELTAm").ActivateIf Range("b4") = "" ThenElseSheets("avionVUELTAm").PrintOutEnd IfSheets("avionVUELTAc").ActivateIf Range("b4") = "" ThenElseSheets("avionVUELTAc").PrintOutEnd IfSheets("trenVUELTA").ActivateIf Range("b4") = "" ThenElseSheets("trenVUELTA").PrintOutEnd IfSheets("Hoja0").SelectEnd Sub

Si el encabezado será el mismo para todas las hojas podes solicitarlo al inicio de la rutina (que de paso te la arreglé un poco)

Sub Imprimiendo()
'por Elsamatilde
'primero establecemos el encabezado para todos
encabe = InputBox("Ingresa texto para el encabezado")
Application.ScreenUpdating = False
Sheets("CONVOYVUELTA").Activate
'solo imprimimos si B4 <> ""
If Range("B4") <> "" Then
'ya activamos la hoja por lo que no hace falta nombrarla
ActiveSheet.PageSetup.LeftHeader = encabe
ActiveSheet.PrintOut
End If
Sheets("busVUELTA").Activate
If Range("B4") <> "" Then
'ya activamos la hoja x lo que no hace falta nombrarla
ActiveSheet.PageSetup.LeftHeader = encabe
ActiveSheet.PrintOut
End If
Sheets("barcoVUELTAm").Activate
If Range("B4") <> "" Then
'ya activamos la hoja x lo que no hace falta nombrarla
ActiveSheet.PageSetup.LeftHeader = encabe
ActiveSheet.PrintOut
End If
Sheets("barcoVUELTAc").Activate
If Range("B4") <> "" Then
'ya activamos la hoja x lo que no hace falta nombrarla
ActiveSheet.PageSetup.LeftHeader = encabe
ActiveSheet.PrintOut
End If
Sheets("avionVUELTAm").Activate
If Range("B4") <> "" Then
'ya activamos la hoja x lo que no hace falta nombrarla
ActiveSheet.PageSetup.LeftHeader = encabe
ActiveSheet.PrintOut
End If
Sheets("avionVUELTAc").Activate
If Range("B4") <> "" Then
'ya activamos la hoja x lo que no hace falta nombrarla
ActiveSheet.PageSetup.LeftHeader = encabe
ActiveSheet.PrintOut
End If
Sheets("trenVUELTA").Activate
If Range("B4") <> "" Then
'ya activamos la hoja x lo que no hace falta nombrarla
ActiveSheet.PageSetup.LeftHeader = encabe
ActiveSheet.PrintOut
End If
Sheets("Hoja0").Select
End Sub

Se escapó la respuesta incompleta...

Si vas a imprimir la MAYORÍA de tus hojas, debieras usar un bucle del tipo

For each sh in sheets..... te lo dejo como inquietud para otra consulta

Muchísimas gracias Elsa Matilde por tu pronta respuesta, inestimable y desinteresada ayuda. Esto es justo lo que estaba intentando hacer y me traía de cabeza ya que de todas las hojas no son en realidad tantas las que he de imprimir. No obstante investigare la sentencia For each sh in sheets... que  me has apuntado, en realidad cada día me gusta mas aprender algo de programación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas