Formato de página
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.
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.
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:
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.
oEP.BackColor = RGB(200,220,240)
También podemos establecer una imagen de fondo, aquí puedes ver a mi novia ;).
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.
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.
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:
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.
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
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 |