Formato de página

From Apache OpenOffice Wiki
Jump to: navigation, search


Editing.png Esta página está en estado borrador.

El formato de página siempre tiene que establecerse por medio de un estilo de página, este, en conjunto con otra serie de propiedades de la hoja donde estés trabajando, te dará control completo sobre el formato de página. La siguiente macro te muestra en un cuadro de mensaje, la lista de formatos de página existentes en el documento desde el cual se ejecuta.


 Sub FormatoPagina1()
 Dim oDoc As Object
 Dim oEstilos As Object
 Dim oEstilosPagina As Object
 
     'Accedemos al documento actual
     oDoc = ThisComponent
     'Accedemos a todos los estilos
     oEstilos = oDoc.getStyleFamilies()
     'Accedemos a los estilos de página
     oEstilosPagina = oEstilos.getByName("PageStyles")
     'Mostramos sus nombres
     MsgBox Join( oEstilosPagina.getElementNames(), Chr(13) )
 
 End Sub


Verifica que efectivamente sean los estilos que tienes, ve a tu hoja y presiona la tecla F11 para abrir el cuadro de dialogo “Estilo y Formato”, selecciona los estilos de página, la lista debería ser igual a la que te devuelve la macro anterior.


ES StarBasic Calc EstilosAutoformato.15.png


Para saber que estilo de página tenemos en nuestra hoja activa, usamos:


 Sub FormatoPagina2()
 Dim oDoc As Object
 Dim oHojaActiva As Object
 Dim oEstilos As Object
 Dim oEstilosPagina As Object
 
     oDoc = ThisComponent
     oHojaActiva = oDoc.getCurrentController.getActiveSheet()
     'Verificamos el nombre del estilo actual    
     MsgBox oHojaActiva.PageStyle
 
 End Sub


Para aplicar el estilo de página que quieras, usamos la siguiente macro:


 Sub FormatoPagina3()
 Dim oDoc As Object
 Dim oHojaActiva As Object
 Dim oEstilos As Object
 Dim oEstilosPagina As Object
 Dim sEstilo As String
 
     sEstilo = "Report"
     oDoc = ThisComponent
     oHojaActiva = oDoc.getCurrentController.getActiveSheet()    
     oEstilos = oDoc.getStyleFamilies()
     oEstilosPagina = oEstilos.getByName("PageStyles")
     'Verificamos que el nombre del estilo exista
     If oEstilosPagina.hasByName( sEstilo ) Then
         'Si existe lo aplicamos
         oHojaActiva.PageStyle = sEstilo
     Else
         MsgBox "No se aplicó ningún estilo de página"
     End If
 
 End Sub


Con el siguiente ejemplo, mostramos algunas propiedades del estilo de página predeterminado.


 Sub FormatoPagina4()
 Dim oDoc As Object
 Dim oHojaActiva As Object
 Dim oEstilos As Object
 Dim oEstilosPagina As Object
 Dim sEstilo As String
 Dim oEP As Object
 
     sEstilo = "Default"
     oDoc = ThisComponent
     oHojaActiva = oDoc.getCurrentController.getActiveSheet()    
     oEstilos = oDoc.getStyleFamilies()
     oEstilosPagina = oEstilos.getByName("PageStyles")
     If oEstilosPagina.hasByName( sEstilo ) Then
         oEP = oEstilosPagina.getByName( sEstilo )
         'Ancho y alto de la página
         MsgBox oEP.Width & " - " & oEP.Height
         'Margen superior e inferior
         MsgBox oEP.TopMargin & " - " & oEP.BottomMargin
         'Margen izquierdo y derecho
         MsgBox oEP.LeftMargin & " - " & oEP.RightMargin
     End If
 
 End Sub


Para borrar un estilo, usamos el método removeByName de la siguiente manera.


 Sub FormatoPagina5()
 Dim oDoc As Object
 Dim oHojaActiva As Object
 Dim oEstilos As Object
 Dim oEstilosPagina As Object
 Dim sEstilo As String
 
     sEstilo = "Videoteca"
     oDoc = ThisComponent
     oHojaActiva = oDoc.getCurrentController.getActiveSheet()    
     oEstilos = oDoc.getStyleFamilies()
     oEstilosPagina = oEstilos.getByName("PageStyles")
     If oEstilosPagina.hasByName( sEstilo ) Then
         If MsgBox("¿Estas seguro de borrar el estilo de página?", 36) = 6 Then
             'Borramos el estilo
             oEstilosPagina.removeByName( sEstilo )
             MsgBox "Estilo borrado"
         Else
             MsgBox "El estilo no se borro"
         End If
     Else
         MsgBox "No existe el estilo de página"
     End If
 
 End Sub


Ten cuidado con la macro anterior, dentro de la interfaz del usuario, los estilos Reporte (Report) y Predeterminado (Default) no se pueden borrar, pero por código si que se puede, si llegas a borrar “todos” los estilos, ya no podrás hace uso del menú Formato > Página, si no me crees y te gusta experimentar como a mi, borra todos los estilos para verificarlo, pero, aunque los borres, las hojas nuevas, al estar basadas en la plantilla predeterminada, tendrán de nuevo los estilos predeterminados, claro, si los borras de la plantilla, si que te quedarás sin estilos, no obstante, puedes volver a crearlos, como en el siguiente ejemplo.


 Sub FormatoPagina6()
 Dim oDoc As Object
 Dim oHojaActiva As Object
 Dim oEstilos As Object
 Dim oEstilosPagina As Object
 Dim sEstilo As String
 Dim oEP As Object
 
     sEstilo = "Videoteca"
     oDoc = ThisComponent
     oHojaActiva = oDoc.getCurrentController.getActiveSheet()    
     oEstilos = oDoc.getStyleFamilies()
     oEstilosPagina = oEstilos.getByName("PageStyles")
     If oEstilosPagina.hasByName( sEstilo ) Then
         oHojaActiva.PageStyle( sEstilo )
     Else
         'Creamos un nuevo estilo
         oEP = oDoc.createInstance( "com.sun.star.style.PageStyle" ) 
         'Lo agregamos a la colección de estilos    
         oEstilosPagina.insertByName( sEstilo, oEP )
         'Le damos formato
         With oEp
             .Width = 27940            'Ancho
             .Height = 21590            'Alto
             .TopMargin = 2000            'Margen superior
             .BottomMargin = 2000        'Margen inferior
             .LeftMargin = 1000        'Margen izquierdo
             .RightMargin = 1000        'Margen derecho
             .IsLandscape = True        'Orientación de la página (horizontal)
             .CenterHorizontally = True    'Centrado horizontal del contenido
             .ScaleToPagesX = 1        'Una página de ancho
             .ScaleToPagesY = 0        'Las que salgan de alto
         End With
     End If
 
 End Sub


Observa las características indicadas dentro de la misma macro, como dicen en mi pueblo -ni están todas las que son, ni son todas las que están-. Las características establecidas son las mismas del menú Formato > Página..., que, como podrás notar, son bastantes, veamos las más comunes.


ES StarBasic Calc EstilosAutoformato.01.png


El ancho (Width) y alto (Height) de la página, se refiere al tamaño del papel, hay que establecerlos en centésimas de milímetro, es decir, cada 100 unidades es igual a 1 milímetro, estas propiedades, tienes que usarlas correctamente en combinación con la propiedad Orientación (IsLandscape), es decir, si estableces esta propiedad en verdadero (True) es decir horizontal, entonces el ancho debe ser mayor que el alto, si la estableces en falso (False) es decir vertical, el alto debe ser mayor para que lo veas correctamente. En el siguiente ejemplo, la primer forma es correcta, la segunda no.


         With oEP
             .Width = 27940            'Ancho
             .Height = 21590            'Alto
             .IsLandscape = True        'Orientación de la página (horizontal)
         End With
 
         With oEP
             .Width = 27940            'Ancho
             .Height = 21590            'Alto
             .IsLandscape = False        'Orientación de la página (vertical)
         End With


Los margenes también están en centésimas de milímetros y se ven afectados por el diseño de página (PageStyleLayout), es decir, si estableces las páginas derecha e izquierda igual o si las reflejas, este valor esta determinado por la enumeración PageStyleLayout, cuyos posibles valores son los siguientes.


Propiedad PageStyleLayout Valor Valor en Interfaz
com.sun.star.style.PageStyleLayout.ALL 0 Derecha e izquierda
com.sun.star.style.PageStyleLayout.LEFT 1 Solo izquierda
com.sun.star.style.PageStyleLayout.RIGHT 2 Solo derecha
com.sun.star.style.PageStyleLayout.MIRRORED 3 Reflejado


Puedes establecer el valor o la constante como en el siguiente ejemplo.


         oEP.PageStyleLayout = 0
         oEP.PageStyleLayout = com.sun.star.style.PageStyleLayout.MIRRORED


El Formato, se refiere al estilo de numeración que se usará cuando se establece la numeración de páginas en el encabezado o en el pie de página, sus valores van del 0 al 5 y se corresponden al orden mostrado en la interfaz del usuario:


         oEP.NumberingType = 4


En Alineación de la tabla, lo correcta seria, centrado del contenido, pues eso es lo que realmente hacen estas propiedades, para el sentido horizontal (CenterHorizontally) y vertical (CenterVertically), son valores booleanos.


         oEP.CenterHorizontally = True
         oEP.CenterVertically = False


En la ficha Borde, tenemos:


ES StarBasic Calc EstilosAutoformato.13.png


Para establecer el borde de la página, usamos la estructura BorderLine, ya vista en otros capítulos, en el siguiente ejemplo, establecemos el borde de cada lado de un color diferente.


 Dim oBordeLinea As New com.sun.star.table.BorderLine
 
         With oBordeLinea
             .Color = RGB(200,0,0)
             .InnerLineWidth = 100    'Línea interior
             .OuterLineWidth = 50    'Línea exterior
             .LineDistance = 100    'Distancia entre líneas
         End With
 
         oEP.TopBorder = oBordeLinea
         oBordeLinea.Color = RGB(0,200,0)
         oEP.BottomBorder = oBordeLinea
         oBordeLinea.Color = RGB(0,0,200)
         oEP.LeftBorder = oBordeLinea
         oBordeLinea.Color = RGB(200,200,200)
         oEP.RightBorder = oBordeLinea


Si quieres ver solo una línea, establece solo una de las líneas, ya sea la interior (InnerLineWidth) o la exterior (OuterLineWidth) y no establezcas la distancia entre ellas (LineDistance), de nuevo, las unidades son centésimas de milímetros. La opción Distancia al texto, se refiere a la distancia entre los bordes y el contenido, si quieres la mista distancia para los cuatro bordes, como si estuviera activada la casilla de verificación Sincronizar, usa la propiedad BorderDistance, si quieres un distancia diferente para cada lado, usa las siguientes propiedades.


         'Para sincronizar todos los bordes a .5 mm
         oEP.BorderDistance = 500
 
         'Para establecer cada borde diferente
         oEP.TopBorderDistance = 500
         oEP.BottomBorderDistance = 1000
         oEP.LeftBorderDistance = 1500
         oEP.RightBorderDistance = 2000


La sombra se establece con la propiedad ShadowFormat, que es una estructura com.sun.star.table.ShadowFormat, con las siguiente propiedades.


         With oSombra
             .Location = 4            'Donde esta la sombra
             .ShadowWidth = 1000        'Ancho de la sombra
             .IsTransparent = False        'Si es transparente
             .Color = RGB(180,180,180)    'Color
         End With
         oEP.ShadowFormat = oSombra


La propiedad Location, esta determinada por la siguiente enumeración.


Propiedad ShadowLocation Valor Valor en Interfaz
com.sun.star.table.ShadowLocation.NONE 0 Ninguna
com.sun.star.table.ShadowLocation.TOP_LEFT 1 Arriba a la izquierda
com.sun.star.table.ShadowLocation.TOP_RIGHT 2 Arriba a la derecha
com.sun.star.table.ShadowLocation.BOTTOM_LEFT 3 Abajo a la izquierda
com.sun.star.table.ShadowLocation.BOTTOM_RIGHT 4 Abajo a la derecha


Si estableces la propiedad de transparencia (IsTransparent) en verdadero (True), la sombra no se vera.


La siguiente ficha se llama Fondo, veamos su propiedad que es muy sencilla.


ES StarBasic Calc EstilosAutoformato.11.png


         oEP.BackColor = RGB(200,220,240)


También podemos establecer una imagen de fondo, aquí puedes ver a mi novia ;).


ES StarBasic Calc EstilosAutoformato.10.png


La ruta de la imagen la establecemos con BackGraphicURL, es importante que le pases la ruta en formato URL, y por supuesto que la imagen exista, si no, no te dará un error pero no te mostrará nada, cuida mucho el tamaño de las imágenes insertadas en documentos, si se usara solo en pantalla, que es lo usual, no requieres ni un gran tamaño ni una gran resolución.


         'Establecemos la ruta de la imagen
         oEP.BackGraphicURL = ConvertToURL( "/home/mau/marion.jpg" )
         'Y la posición donde la queremos
         oEP.BackGraphicLocation = 5


La posición (BackGraphicLocation) puede tomar valores de 1 a 11, de acuerdo a la siguiente imagen, en la opción Área, te cubrirá la hoja completa con la imagen.


ES StarBasic Calc EstilosAutoformato.09.png


Nos saltamos el encabezado y pie de página que por su complejidad veremos al final, y veamos la ultima ficha Hoja, que tiene las siguientes propiedades.


ES StarBasic Calc EstilosAutoformato.08.png


El orden de impresión (Orden de página) lo establecemos con la propiedad; PrintDownFirst, valor booleano que equivale a.


  • Verdadero (True) = De arriba hacia abajo, después hacia la derecha
  • Falso (False) = De izquierda a derecha y hacia abajo


 oEP.PrintDownFirst = True


El valor de Primer núm de página, esta representado por la propiedad FirstPageNumber, valor tipo entero (integer) que establece un inicio de numeración de página diferente de uno. Ten cuidado si lo usas en conjunto con el total de hojas, pues te puede dar resultados algo extraños, como mostrarte Hoja 5 de 3.


 oEP.FirstPageNumber = 8


Las siguientes propiedades solo determinan que opciones se imprimirán y cuales no, en cada línea te muestro su equivalencia en la interfaz del usuario.


     With oEP
         .PrintAnnotations = False    'Imprimir las notas de celdas
         .PrintCharts = True        'Imprimir los Gráficos
         .PrintDrawing = True        'Imprimir los Objetos de dibujo
         .PrintFormulas = False        'Imprimir las formulas, en vez del resultado
         .PrintGrid = False        'Imprimir la cuadrícula de las celdas
         .PrintHeaders = False        'Imprimir encabezados de filas y columnas
         .PrintObjects = True        'Imprimir Objetos e imágenes
         .PrintZeroValues = True    'Imprimir los valores cero
     End With


La escala de impresión nos puede resolver muy fácilmente problemas de impresión, la primera opción es aumentar o disminuirla según nuestras necesidades con la propiedad PageScale, un valor tipo entero (integer) entre 10 y 400, si lo estableces fuera de estos limites, se ajustará al valor mínimo o máximo más cercano, toma en cuenta que este porcentaje de cambio, solo es visible en la vista preliminar y a la hora de imprimir, en tu interfaz de usuario no veras ningún cambio de tamaño.


         oEP.PageScale = 80    'Ajustamos al 80% de escala


La segunda opción es ajustar a un determinado número de páginas, tienes que considerar un ajuste óptimo entre cantidad de datos y este valor, pues si tienes muchos datos y estableces un valor de páginas muy pequeño, el factor de escala se reducirá tanto que los datos no serán legibles.


         'Ajustamos a tres páginas de impresión
         oEP.ScaleToPages = 3


Por ultimo la que más me gusta, puedes establecer un determinado número de páginas de ancho por otro de alto, por ejemplo:


         'Establecemos la impresión en tres de ancho por dos de alto
         oEP.ScaleToPagesX = 3
         oEP.ScaleToPagesY = 2


Estas propiedades son muy útiles en eso grandes listados de datos, muy comunes donde tienes muchas filas y un determinado número de columnas que caben en el ancho de una hoja, ya sea vertical u horizontal, si estableces el ancho en 1 y el alto en 0, estamos forzando a usar exactamente una de ancho por las “necesarias” de alto.


         'Establecemos la impresión en una de ancho por las que salgan de alto
         oEp.ScaleToPagesX = 1
         oEp.ScaleToPagesY = 0


Ahora si, ya casi para terminar, veamos como modificar el encabezado y el pie de página de nuestro estilo de página. Lo primero que hay que hacer, es activarlos o desactivarlos según nuestras necesidades:


ES StarBasic Calc EstilosAutoformato.07.png


Como son muy similares las opciones de encabezado y pie de página, te iré mostrando sus propiedades, una junto a otra. Para activarlos o desactivarlos usamos:


         'Activamos el encabezado
         oEp.HeaderOn = True
         'y desactivamos el pie de página
         oEp.FooterOn = False


La opción Contenido a la izquierda/derecha igual, nos permite, si esta desactivada, establecer las opciones de encabezado o pie de página, de forma diferente para las páginas pares e impares de nuestra impresión, esta opción, junto con la de Diseño de página vista anteriormente, nos permiten configurar nuestra impresión como si de un libro se tratará. Para activarla o desactivarla usamos.


         'Lo desactivamos en el encabezado
         oEP.HeaderIsShared = False
         'Lo activamos en el pie de página
         oEP.FooterIsShared = True


Después tenemos las opciones para establecer los margenes en centésimas de milímetros, este margen es distinto e independiente del margen de la página.


         'Establecemos los margenes del encabezado en 3 cm
         oEP.HeaderRightMargin = 3000
         oEP.HeaderLeftMargin = 3000
 
         'Establecemos los margenes del pie de página en 2 cm
         oEP.FooterRightMargin = 2000
         oEP.FooterLeftMargin = 2000


La propiedad Espacio, se refiere a la distancia entre en el encabezado o pie de página y el contenido del documento.


         'Ajustamos la distancia del encabezado al cuerpo del documento¡
         oEP.HeaderBodyDistance = 500
         'Ajustamos la distancia del pie de página al cuerpo del documento¡
         oEP.FooterBodyDistance = 1000


La propiedad Altura, es la altura del encabezado o pie de página, es decir, el espacio disponible para introducir información, pero toma en cuenta que dentro de este valor, esta considerada la distancia entre el encabezado o pie de página y el cuerpo del documento, por lo que si quieres una distancia absoluta, debes de sumarle dicho valor, como en.


         'Ajustamos la altura del encabezado sumando el espacio al cuerpo
         oEP.HeaderHeight = 2000 + oEP.HeaderBodyDistance
         'Y del pie de página
         oEP.FooterHeight = 1000 + oEP.FooterBodyDistance


La propiedad Ajuste dinámico de la altura, nos permite adaptar la altura al contenido del encabezado o pie de página, si esta activada, la medida introducida en la propiedad anterior no será tomada en cuenta, esta propiedad es muy útil si establecemos por código el contenido de los encabezados o pies de página. Para activarla o desactivarla, usamos.


         'Establecemos la altura dinámica para el encabezado
         oEP.HeaderDynamic = True
         'La desactivamos para el pie de página
         oEP.FooterDynamic = False


Igual que en el estilo de la página, en el encabezado como en el pie de página, tenemos las opciones de establecer, un borde, una sombra, un color de fondo o una imagen, la forma es la misma, lo que cambia, es las propiedades a las que se establecen estas.


         'Configuramos el tipo de borde
         With oBordeLinea
             .Color = RGB(0,150,0)
             .InnerLineWidth = 0    'Línea interior
             .OuterLineWidth = 80    'Línea exterior
         End With
 
         'Establecemos el mismo para todos
         oEP.HeaderTopBorder = oBordeLinea
         oEP.HeaderBottomBorder = oBordeLinea
         oEP.HeaderLeftBorder = oBordeLinea
         oEP.HeaderRightBorder = oBordeLinea
 
         'Cambiamos el color para el borde del pie de página
         With oBordeLinea
             .Color = RGB(150,150,0)
         End With
 
         'Establecemos el mismo para todos
         oEP.FooterTopBorder = oBordeLinea
         oEP.FooterBottomBorder = oBordeLinea
         oEP.FooterLeftBorder = oBordeLinea
         oEP.FooterRightBorder = oBordeLinea


Para la sombra aplica igual que en estilo de página.


         'Configuramos la sombra
         With oSombra
             .Location = 4            'Donde esta la sombra
             .ShadowWidth = 500        'Ancho de la sombra
             .Color = RGB(150,160,170)    'Color
         End With
         'Para el encabezado
         oEP.HeaderShadowFormat = oSombra
         'Para el pie de página
         oEP.FooterShadowFormat = oSombra


Y el color de fondo.


         'Establecemos el color de fondo del encabezado de forma aleatoria
         oEP.HeaderBackColor = RGB ( Rnd()*255,Rnd()*255,Rnd()*255 )
         'Igual para el pie de página
         oEP.FooterBackColor = RGB ( Rnd()*255,Rnd()*255,Rnd()*255 )


Para agregar una imagen, usamos.


         'Establecemos la ruta de la imagen
         oEP.HeaderBackGraphicURL = ConvertToURL( "/home/mau/arriba.jpg" )
         'Y la posición donde la queremos
         oEP.HeaderBackGraphicLocation = 10
 
         'Ahora en el pie de página
         oEP.FooterBackGraphicURL = ConvertToURL( "/home/mau/abajo.jpg" )
         'Y la posición donde la queremos
         oEP.FooterBackGraphicLocation = 10


Para quitar una imagen agregada, tienes que establecer esta propiedad en vacía.


         oEP.HeaderBackGraphicURL = ""


El contenido que puede llevar el encabezado o el pie de página, es muy rico, puedes establecer de forma independiente, el tipo de letra y su estilo de las tres áreas disponibles, como se ilustra en la imagen siguiente.


ES StarBasic Calc EstilosAutoformato.06.png


Veamos como controlar el contenido de estas secciones. Lo primero que tenemos que tener presente, es la opción vista anteriormente; Contenido a la izquierda/derecha igual, si esta propiedad esta seleccionada, entonces solo tenemos que modificar el contenido de un lado, pero si esta desactivada, entonces tenemos que establecer, tanto el encabezado o pie de página, tanto de las páginas pares como de las impares, estas propiedades son.


  • RightPageHeaderContentPara el encabezado de las páginas derechas
  • LeftPageHeaderContentPara el encabezado de las páginas izquierdas
  • RightPageFooterContentPara el pie de página de las páginas derechas
  • LeftPageFooterContentPara el pie de página de las páginas izquierdas


Para nuestro ejemplo, dado que son las mismas opciones para uno y otro, daremos por hecho que las propiedades (HeaderIsShared y FooterIsShared) están seleccionadas, de este modo, solo modificamos las propiedades de las páginas derechas, que serán iguales a las de la izquierda, pero no te confundas, aun manipulando solo las de las páginas derechas, tenemos acceso a las tres secciones mostradas en la imagen anterior, veamos como.


         'Mostramos el contenido de la izquierda del encabezado
         MsgBox oEP.RightPageHeaderContent.LeftText.String
         'Del centro
         MsgBox oEP.RightPageHeaderContent.CenterText.String
         'Y de la derecha
         MsgBox oEP.RightPageHeaderContent.RightText.String


Vamos a cambiar el texto de mostrado en el ejemplo anterior de las seis secciones accedibles, tres para el encabezado y tres para el pie de página, de la siguiente manera.


 Sub FormatoPagina8()
 Dim oDoc As Object
 Dim oEstilos As Object
 Dim oEstilosPagina As Object
 Dim sEstilo As String
 Dim oEP As Object
 Dim oContenido As Object
 Dim oTexto As Object
 
     sEstilo = "Videoteca"
     oDoc = ThisComponent
     oEstilos = oDoc.getStyleFamilies()
     oEstilosPagina = oEstilos.getByName("PageStyles")
     If oEstilosPagina.hasByName( sEstilo ) Then
         oEP = oEstilosPagina.getByName( sEstilo ) 
         oEP.HeaderOn = True
         oEP.FooterOn = True
 
         'Accedemos al contenido del encabezado        
         oContenido = oEP.RightPageHeaderContent()
         'Accedemos a la parte izquierda
         oTexto = oContenido.LeftText()
         'Cambiamos el texto
         oTexto.String = "Esta es la izquierda" & Chr(13) & "en el encabezado"
         'Y el color
         oTexto.Text.CharColor = RGB(255,0,0)
         'Reasignamos el contenido para ver los cambios
         oEP.RightPageHeaderContent = oContenido
 
         'Lo mismo para el centro del encabezado
         oTexto = oContenido.CenterText()
         oTexto.String = "Este es el centro" & Chr(13) & "en el encabezado"
         oTexto.Text.CharColor = RGB(0,255,0)
         oEP.RightPageHeaderContent = oContenido
 
         'Y la derecha
         oTexto = oContenido.RightText()
         oTexto.String = "Esta es la derecha" & Chr(13) & "en el encabezado"
         oTexto.Text.CharColor = RGB(0,0,255)
         oEP.RightPageHeaderContent = oContenido
 
         'Ahora modificamos el pie de página
         oContenido = oEP.RightPageFooterContent()
         oTexto = oContenido.LeftText()
         oTexto.String = "Esta es la izquierda" & Chr(13) & "en el pie de página"
         oTexto.Text.CharColor = RGB(0,0,255)
         oEP.RightPageFooterContent = oContenido
 
         oTexto = oContenido.CenterText()
         oTexto.String = "Este es el centro" & Chr(13) & "en el pie de página"
         oTexto.Text.CharColor = RGB(0,255,0)
         oEP.RightPageFooterContent = oContenido
 
         oTexto = oContenido.RightText()
         oTexto.String = "Esta es la derecha" & Chr(13) & "en el pie de página"
         oTexto.Text.CharColor = RGB(255,0,0)
         oEP.RightPageFooterContent = oContenido
     End If
 
 End Sub


Como sabes, hay una serie de campos predeterminados que podemos incluir en cualquier área de un encabezado o de un pie de página, campos como, la fecha, la hora, el número de página y el total de páginas, veamos como insertarlos.


 Sub FormatoPagina9()
 Dim oDoc As Object
 Dim oEstilos As Object
 Dim oEstilosPagina As Object
 Dim sEstilo As String
 Dim oEP As Object
 Dim oContenido As Object
 Dim oTexto As Object
 Dim oCursor As Object
 Dim oCampo As Object
 
     sEstilo = "Videoteca"
     oDoc = ThisComponent
     oEstilos = oDoc.getStyleFamilies()
     oEstilosPagina = oEstilos.getByName("PageStyles")
     If oEstilosPagina.hasByName( sEstilo ) Then
         oEP = oEstilosPagina.getByName( sEstilo ) 
         oEP.HeaderOn = True
         oEP.FooterOn = True
 
         'Accedemos al contenido del pie de página
         oContenido = oEP.RightPageFooterContent()
         'Creamos una instancia del campo Nombre del archivo
         oCampo = oDoc.createInstance ("com.sun.star.text.TextField.FileName")
         'Limpiamos las tres secciones
         oContenido.LeftText.String = ""
         oContenido.CenterText.String = ""
         oContenido.RightText.String = ""
         'Creamos un cursor en esa sección
         oCursor = oContenido.LeftText.createTextCursor()
         'Nos movemos al final
         oCursor.gotoEnd( False )
         'Insertamos el campo
         oContenido.LeftText.insertTextContent (oCursor, oCampo, True)
 
         'Creamos el campo Número de página
         oCampo = oDoc.createInstance ("com.sun.star.text.TextField.PageNumber")        
         'Creamos un cursor en la sección central
         oCursor = oContenido.CenterText.createTextCursor()
         oCursor.gotoEnd( False )    'Nos movemos
         oCursor.String = "Página "    'Insertamos un texto
         oCursor.gotoEnd( False )    'Nos movemos
         'Insertamos el campo
         oContenido.CenterText.insertTextContent (oCursor, oCampo, True)
         oCursor.gotoEnd( False )    'Nos movemos
         oCursor.String = " de "        'Insertamos más texto
         oCursor.gotoEnd( False )    'Nos movemos
         'Creamos el campo, Total de páginas
         oCampo = oDoc.createInstance ("com.sun.star.text.TextField.PageCount")
         'Lo insertamos
         oContenido.CenterText.insertTextContent (oCursor, oCampo, True)
 
         'Creamos el campo de Fecha
         oCampo = oDoc.createInstance ("com.sun.star.text.TextField.DateTime")        
         oCampo.IsDate = True        'Es una fecha
         'Creamos un cursor en la sección derecha
         oCursor = oContenido.RightText.createTextCursor()
         oCursor.gotoEnd( False )    'Nos movemos
         'Insertamos el campo
         oContenido.RightText.insertTextContent (oCursor, oCampo, True)    
 
         'Actualizamos el contenido del pie de página
         oEP.RightPageFooterContent = oContenido    
 
     End If
 
 End Sub



ES.Plantillas.Logo foro es.png
Si tienes dudas acerca de lo aquí explicado, tienes algún problema con AOO,
o quieres ampliar la información, no dudes en dirigirte al

Foro Oficial en español de Apache OpenOffice para Macros y API UNO

Personal tools