[RESUELTO]Macro Cabecera

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Visente
Mensajes: 7
Registrado: Vie Jul 08, 2011 7:34 am

[RESUELTO]Macro Cabecera

Mensaje por Visente »

Hola! Buenas soy nuevo en esto del OOo Basic y la verdad es que estoy algo perdido, a ver si alguien me puede ayudar, estoy intentando hacer una macro para personalizar la cabecera , lo que quiero es que cuando le des a la macro te aparezcan unas listas y lo que selecciones (que seran textos e imagenes) se inserte en la cabecera.

Mis preguntas son :

1ª ¿Como personalizo solo la letra(el estilo) del la cabecera sin afectar a la letra del resto del documento.?

2ª ¿Como se inserta una imagen en la cabecera?


Muchas Gracias de antemano.
Última edición por Visente el Jue Ago 04, 2011 8:03 am, editado 1 vez en total.
OpenOffice 3.2 en Windows XP
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro Cabecera

Mensaje por mauricio »

Hola...

¿Sobre que aplicación quieres hacer esto (Writer, Calc)?

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Visente
Mensajes: 7
Registrado: Vie Jul 08, 2011 7:34 am

Re: Macro Cabecera

Mensaje por Visente »

Sobre Writer , perdon por no aclararlo antes. :(
OpenOffice 3.2 en Windows XP
FJCC-ES
Mensajes: 873
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Macro Cabecera

Mensaje por FJCC-ES »

Ejemplos de código para cambiar el estilo de la cabecera y insertar una imagen:

Modificar el estilo "Encabezamiento"

Código: Seleccionar todo

oFam_Estilos = ThisComponent.StyleFamilies
oEstilos_Para = oFam_Estilos.getByName("ParagraphStyles")
oEstilo_Encab = oEstilos_Para.getByName("Header")
oEstilo_Encab.CharFontName = "Arial"
Cambiar la fuente directamente

Código: Seleccionar todo

oFam_Estilos = ThisComponent.StyleFamilies
oEstilos_Pagina = oFam_Estilos.getByName("PageStyles")
oEstilo_Prede = oEstilos_Pagina.getByName("Standard")
oHeaderText = oEstilo_Prede.HeaderText
Enum_Paraf = oHeaderText.createEnumeration()
While Enum_Paraf.hasMoreElements
	Paraf = Enum_Paraf.nextElement()
	Paraf.CharFontName = "Times New Roman"
WEnd
Insertar una imagen (26-7-2011)

Código: Seleccionar todo

Dim Size as New com.sun.star.awt.Size
oFam_Estilos = ThisComponent.StyleFamilies
oEstilos_Pagina = oFam_Estilos.getByName("PageStyles")
oEstilo_Prede = oEstilos_Pagina.getByName("Standard")
oHeaderText = oEstilo_Prede.HeaderText
Encab_Start = oHeaderText.Start
Size.Height = 500
Size.Width = 1000
GraphObj = ThisComponent.createInstance("com.sun.star.text.TextGraphicObject")
GraphObj.GraphicURL = "file:///C:/MyPicture.JPG"
GraphObj.Size = Size
GraphObj.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
oHeaderText.insertTextContent(Encab_Start, GraphObj, False)
Última edición por FJCC-ES el Mar Jul 26, 2011 3:50 pm, editado 2 veces en total.
Visente
Mensajes: 7
Registrado: Vie Jul 08, 2011 7:34 am

Re: Macro Cabecera

Mensaje por Visente »

Muchas Gracias por la respuesta, al final usare la primera opcion y la tercera, pero en la tercera me da problemas en "GraphicObj.Size = Size" me dice que "Error de ejecucion de basic Variable de objeto no establecida", creia que era pq no cojia bien la url, pero con el observador veo que si que la coje y al final no se pq podria ser.
OpenOffice 3.2 en Windows XP
Visente
Mensajes: 7
Registrado: Vie Jul 08, 2011 7:34 am

Re: Macro Cabecera

Mensaje por Visente »

Creo que he solucionado el problema anterior, lo que he hecho es poner el tamaño directamente en el objeto, pero ahora me surge otro problema:

Dim Size as New com.sun.star.awt.Size
oFam_Estilos = ThisComponent.StyleFamilies
oEstilos_Pagina = oFam_Estilos.getByName("PageStyles")
oEstilo_Prede = oEstilos_Pagina.getByName("Standard")
oHeaderText = oEstilo_Prede.HeaderText
Encab_Start = oHeaderText.Start
GraphObj = ThisComponent.createInstance("com.sun.star.text.TextGraphicObject")
GraphObj.GraphicURL = "file:///C:/MyPicture.JPG"
GraphObj.Size.Height = 100
GraphObj.Size.Width = 100
oHeaderText.insertTextContent(Encab_Start, Graph_Obj, False)------> PROBLEMA: Variable Objeto no establecida.
OpenOffice 3.2 en Windows XP
FJCC-ES
Mensajes: 873
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Macro Cabecera

Mensaje por FJCC-ES »

No sé como lo hice pero el código que publique no era la versión final. :oops: Lo he corregido.
Visente
Mensajes: 7
Registrado: Vie Jul 08, 2011 7:34 am

Re: Macro Cabecera

Mensaje por Visente »

No pasa nada la intencion es lo que cuenta,gracias de todas formas, al fina he conseguido insetar la imagen con "Stan.HeaderBackGraphicURL = ConvertToURL( "file:///C:/MyPicture.JPG" )" , lo unico malo es que me aparece en el centro de la cabecera y lo intento solucionar con "Stan.HeaderBackGraphicLocation="HEADER_LEFT_TOP" , pero me desaparece la imagen :(.

Por cierto otro problema que me encuentro es a la hora de cambiar el color del texto de la cabecera y su tamaño, consigo cambiar el color y el tamaño pero para variar cambio el todo el documento!!, me gustaria cambiar solo el de la cabecera.
OpenOffice 3.2 en Windows XP
FJCC-ES
Mensajes: 873
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Macro Cabecera

Mensaje por FJCC-ES »

Sugiero

Código: Seleccionar todo

Stan.HeaderBackGraphicLocation= com.sun.star.style.GraphicLocation.LEFT_TOP
¿Puede subir el código para cambiar el color y tamaño del texto?
Visente
Mensajes: 7
Registrado: Vie Jul 08, 2011 7:34 am

Re: Macro Cabecera

Mensaje por Visente »

Muchas Gracias !! Me ha servido de mucho, al final resolvi el problemas de tamaño y color, mañana cuando llegue al trabajo pondre el codigo para que a la gente le sirva de ayuda.
De todas maneras me queda un ultimo problemilla y termino con la macro, he estado toda la mañana intentando hacer un boton aceptar para que me cierre el dialogo, pero no hay manera, intento hacer debajo de la macro principal otra macro con Dlg.endExecute() y me dice que el objeto no esta declarado, lo declaro como en la macro principal y me vuelve abrir el dialogo XDDDDDDD
Asi es como lo intente la primera vez y intento asociar el boton aceptar a la macro bAceptar:
Sub EjecutarMiDialogo1()
Dim oDialogo As Object

'Cargamos la librería Standard en memoria
DialogLibraries.LoadLibrary( "Standard" )
'Cargamos el cuadro de diálogo en memoria
oDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName("miDialogo") )
'Lo ejecutamos (mostramos)

oDialogo.execute()

'Lo liberamos de memoria
oDialogo.dispose()

End Sub

Sub bAceptar()
oDialog.endExecute()
End Sub
Creo que le tendre que pasar algo de la primera macro a la segunda, supongo que sera el oDialog o algo asi .

Espero haberme explicado bien y gracias de antemano :)
OpenOffice 3.2 en Windows XP
FJCC-ES
Mensajes: 873
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Macro Cabecera

Mensaje por FJCC-ES »

Declare oDialogo como variable global

Código: Seleccionar todo

Dim oDialogo As Object

Sub EjecutarMiDialogo1()

'Cargamos la librería Standard en memoria
DialogLibraries.LoadLibrary( "Standard" )
'Cargamos el cuadro de diálogo en memoria
oDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName("miDialogo") )
'Lo ejecutamos (mostramos)

oDialogo.execute()

'Lo liberamos de memoria
oDialogo.dispose()

End Sub

Sub bAceptar()
oDialog.endExecute()
End Sub
Visente
Mensajes: 7
Registrado: Vie Jul 08, 2011 7:34 am

Re: Macro Cabecera[RESUELTO]

Mensaje por Visente »

Muchas Gracias!!!! :D Al final me ha servido soys unos cracks !!! ya he termiando!! ueeeeee!!! la verdad que no se me ocurriera lo de la variable global XD , si es como en Java.

Aqui dejo el codigo de mi cabecera para ver si le sirve a alguien :

Código: Seleccionar todo

Sub MacroCabecera

       oFam_Estilos = ThisComponent.StyleFamilies
       oEstilos_Para = oFam_Estilos.getByName("ParagraphStyles")
       oEstilo_Encab = oEstilos_Para.getByName("Header")
        oEstilo_Encab.CharFontName = "Arial Narrow"
	oEstilo_Encab.CharHeight = 8.5
	oEstilo_Encab.CharColor = RGB(0,0,800) 
	oDoc = ThisComponent
	oStyles = oDoc.getStyleFamilies
	oPS = oStyles.getByName("PageStyles")
	Stan = oPS.getByName("Standard")
	Stan.HeaderIsOn = True 
	Stan.HeaderHeight = 2500 + Stan.HeaderBodyDistance
	Stan.HeaderBackGraphicURL = ConvertToURL( "file:///C:/OpenOffice/logo.JPG" )
	Stan.HeaderBackGraphicLocation= com.sun.star.style.GraphicLocation.LEFT_TOP
        Stan.HeaderText.String = "" & Chr(13)&  Chr(9) & "texto en la cabecera"
     End Sub


Espero que a la gente le sirva, al final a base de golpes preguntar en el foro, leer el manual de mauricio y otros manuales, lo he podido hacer.

Una ultima pregunta ¿ como le puedo pasar la macro a mis compañeros? vosotros cuando pasis el archivo ya contienen las macros, yo se las paso a mis compañeros y no la tienen, ¿como lo haceis?
OpenOffice 3.2 en Windows XP
visatico
Mensajes: 8
Registrado: Dom Feb 25, 2018 6:22 pm

Re: [RESUELTO]Macro Cabecera

Mensaje por visatico »

Buenas,
me ha gustado el ejemplo.
Lo he estado probando y hay una cosa que no sé como sería.

La idea es tener 2 cabeceras, una para la primera página y otra para el resto de páginas del documento.

Es posible hacer esto?
OpenOffice 3.1/LibreOffice 5.3.1 en Windows 7
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO]Macro Cabecera

Mensaje por mauricio »

Tienes que usar dos estilos de página para esto... pero... no es buena idea usar un tema tan viejo, es mejor que siempre habrás uno nuevo explicando detalladamente el problema y si es necesario hacer referencia a este tema.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
visatico
Mensajes: 8
Registrado: Dom Feb 25, 2018 6:22 pm

Re: [RESUELTO]Macro Cabecera

Mensaje por visatico »

Ok,
estaba buscando como hacer esto y he visto que este tema era justo lo que quería.
OpenOffice 3.1/LibreOffice 5.3.1 en Windows 7
Responder