[RESUELTO]Macro Cabecera
[RESUELTO]Macro Cabecera
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.
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
Re: Macro Cabecera
Hola...
¿Sobre que aplicación quieres hacer esto (Writer, Calc)?
Saludos
¿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
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Macro Cabecera
Ejemplos de código para cambiar el estilo de la cabecera y insertar una imagen:
Modificar el estilo "Encabezamiento"
Cambiar la fuente directamente
Insertar una imagen (26-7-2011)
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"
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
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.
Re: Macro Cabecera
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
Re: Macro Cabecera
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.
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
Re: Macro Cabecera
No sé como lo hice pero el código que publique no era la versión final. Lo he corregido.
Re: Macro Cabecera
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.
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
Re: Macro Cabecera
Sugiero
¿Puede subir el código para cambiar el color y tamaño del texto?
Código: Seleccionar todo
Stan.HeaderBackGraphicLocation= com.sun.star.style.GraphicLocation.LEFT_TOP
Re: Macro Cabecera
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
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
Re: Macro Cabecera
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
Re: Macro Cabecera[RESUELTO]
Muchas Gracias!!!! 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 :
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?
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
Re: [RESUELTO]Macro Cabecera
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?
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
Re: [RESUELTO]Macro Cabecera
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
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: [RESUELTO]Macro Cabecera
Ok,
estaba buscando como hacer esto y he visto que este tema era justo lo que quería.
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