[RESUELTO] Anclar un gráfico a una celda.

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
pppardo
Mensajes: 6
Registrado: Vie Mar 02, 2018 2:35 pm

[RESUELTO] Anclar un gráfico a una celda.

Mensaje por pppardo »

Hola a todos.
Estoy intentando crear un gráfico basado en una hoja de cálculo Calc mediante macros y no he sido capaz de anclarlo a una celda.

¿Alguien que sepa cómo hacerlo?

Gracias
Última edición por pppardo el Mar Mar 13, 2018 9:10 am, editado 2 veces en total.
Pepe Pardo
Open Office 4.1.3
Windows 7
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Anclar un gráfico a una celda.

Mensaje por mauricio »

Un gráfico es un elemento gráfico más de la hoja, usa la propiedad Anchor, requiere una celda como valor:

Código: Seleccionar todo

	obj = ThisComponent.CurrentController.Selection.getByIndex(0)
	cell = ThisComponent.getCurrentController.getActiveSheet.getCellRangeByName("A1")
	obj.Anchor = cell
Tienes mucho información por acá:
https://wiki.openoffice.org/wiki/ES/Man ... osGraficos

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pppardo
Mensajes: 6
Registrado: Vie Mar 02, 2018 2:35 pm

Re: Anclar un gráfico a una celda.

Mensaje por pppardo »

Al decir gráfico quería decir Chart. Es decir diagramas estadísticos. De tarta, de barras etc. Eso vale también?
Pepe Pardo
Open Office 4.1.3
Windows 7
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Anclar un gráfico a una celda.

Mensaje por mauricio »

Reitero, un gráfico es un elemento más, ¿ya probaste?
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pppardo
Mensajes: 6
Registrado: Vie Mar 02, 2018 2:35 pm

Re: Anclar un gráfico a una celda.

Mensaje por pppardo »

En cuanto llegue a casa lo pruebo.
Gracias.
Pepe Pardo
Open Office 4.1.3
Windows 7
pppardo
Mensajes: 6
Registrado: Vie Mar 02, 2018 2:35 pm

Re: Anclar un gráfico a una celda.

Mensaje por pppardo »

Vale, funciona. Mi problema ahora es que no tengo seleccionado nada. Tengo el objeto Chart pero no tengo el Shape. ¿Como puedo obtenerlo?

Código: Seleccionar todo

oChart = thisComponent.Sheets(0).getCharts().getByName("Object 1")
oShape = ??
Pepe Pardo
Open Office 4.1.3
Windows 7
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Anclar un gráfico a una celda.

Mensaje por mauricio »

Si insertas el gráfico por macros, debes de tener tanto el Chart como el Shape, pero... "así sin ver", es difícil ayudarles...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pppardo
Mensajes: 6
Registrado: Vie Mar 02, 2018 2:35 pm

Re: Anclar un gráfico a una celda.

Mensaje por pppardo »

Sería tal que así:

Código: Seleccionar todo

Sub GeneraDiagrama()
	Dim sName
	Dim oAddress
	Dim oCharts 
	
	sName = "Diagrama"
	oAddress = thisComponent.Sheets(0).getCellRangeByName("A2:C10").getRangeAddress()
	oCharts = thisComponent.Sheets(0).getCharts()

	If NOT oCharts.hasByName(sName) Then
		oRect = createObject("com.sun.star.awt.Rectangle")
		oRect.X = 1000
		oRect.Y = 1000
		oRect.width = 10000
		oRect.Height= 5000
		oCharts.addNewByName(sName, oRect, Array(oAddress), False, True)
	End If
End Sub
Pepe Pardo
Open Office 4.1.3
Windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Anclar un gráfico a una celda.

Mensaje por fornelasa »

No sé si te he entendido al 100%, dices:
Anclar un gráfico a una celda.
Por ejemplo mover el grafico a la celda E1:
Saludos.
Adjuntos
anclarGrafico (2).ods
Gráfico
(14.7 KiB) Descargado 155 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
pppardo
Mensajes: 6
Registrado: Vie Mar 02, 2018 2:35 pm

Re: Anclar un gráfico a una celda.

Mensaje por pppardo »

Gracias por responder.
Lo que has mandado lo que hace es establecer el gráfico en la misma posición que una celda pero no lo vincula. Con el anclaje (Botón derecho sobre el gráfico, Ancla, Al a celda) lo que hace es que se mueve con la celda. Se amplio las celdas el gráfico también se mueve.

He solucionado el problema a lo bruto. Buscando en todos los Shapes y mirando si se corresponde con el Chart.

Código: Seleccionar todo

Sub anchorChart(oChart, oCelda) As Object

    oModelo = oChart.getEmbeddedObject()

    dP=thisComponent.Sheets(0).getDrawPage()
    cuenta = dP.count

    for i=0 to cuenta-1
    	oPage = dP(i)
    	If oPage.supportsService("com.sun.star.drawing.OLE2Shape") Then
			if EqualUnoObjects(oPage.Model, oModelo) then 
			    oPage.Anchor=oCelda
	            Exit For
	        End If
	    End if
    next
End Function
Pepe Pardo
Open Office 4.1.3
Windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Anclar un gráfico a una celda.

Mensaje por fornelasa »

ummmm yo realmente al final no entendí.
Aquí un ejemplo de como anclar un gráfico a una celda con la macro que primeramente subiste.
Saludos.
Adjuntos
anclarGrafico.ods
Anclar gráfico.
(14.67 KiB) Descargado 155 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Responder