Hola!
Primero, una explicación del problema.
Cuando insertamos un objeto OLE de texto en Calc, el objeto queda desplazado por efecto de los márgenes de página del documento. Esto ocurre también al abrir documentos de Excel con textos de Word incrustados.
La solución que encontré es entrar en el texto incrustado y en el formato de página, dejar los márgenes a cero y el ancho de página ajustarlo al ancho del contenedor.
En las imágenes que siguen se puede ver gráficamente:
Ahora me encuentro con un organismo en migración con un departamento con abundantes hojas de cálculo donde cada uno de los documentos contiene un par de docenas de incrustaciones de este estilo.
Estos documentos deben ser manipulados delante del público y resulta absolutamente tediosa su resolución. Entonces, me he propuesto elaborar una macro que automatice la "reparación".
Entonces, mi reto es como acceder por programación a los objetos incrustados en el documento, comprobar si son objetos de texto, y en su caso, editar el formato de página del contenido.
No estoy teniendo ningún éxito en la búsqueda de lo primero: ¿Cómo acceder desde el documento a sus objetos OLE?
Gracias por vuestra ayuda,
[RESUELTO] Acceder a objectos de texto incrustados en Calc
[RESUELTO] Acceder a objectos de texto incrustados en Calc
Última edición por mauricio el Mar Feb 03, 2015 2:50 am, editado 2 veces en total.
Razón: Marcar icono de resuelto
Razón: Marcar icono de resuelto
Ismael Fanlo
*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial
*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial
Re: Acceder a objectos de texto incrustados en Calc
Código: Seleccionar todo
oSheet = ThisComponent.Sheets.getByName("Sheet1")
oDP = oSheet.getDrawPage()
for i = 0 to oDP.Count - 1
oObj = oDP.getByIndex(i)
If oObj.supportsService("com.sun.star.drawing.OLE2Shape") then
oEmbObj = oObj.EmbeddedObject
Comp = oEmbObj.getComponent()
If Comp.supportsService("com.sun.star.text.TextDocument") then
StyleFam = Comp.StyleFamilies
oPageStyles = StyleFam.getByName("PageStyles")
oStd = oPageStyles.getByName("Standard")
oStd.LeftMargin=0
oStd.RightMargin=0
End If
End If
next i
Re: Acceder a objectos de texto incrustados en Calc
Muchísimas gracias, FJCC-ES!
Lo del getDrawPage() no se me abría ocurrido en la vida...
Bueno, doy el tema por resuelto y analizaré el código que me muestras.
Gracias de nuevo.
Lo del getDrawPage() no se me abría ocurrido en la vida...
Bueno, doy el tema por resuelto y analizaré el código que me muestras.
Gracias de nuevo.
Ismael Fanlo
*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial
*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial
Re: Acceder a objectos de texto incrustados en Calc
es que no has leido mi libro...ifanlo escribió:Lo del getDrawPage() no se me abría ocurrido en la vida...
______________________________________________
"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] Acceder a objectos de texto incrustados en Ca
Sí que lo he leído, Mauricio, pero estoy muy desentrenado... y buscando no supe encontrar.
Hostias! ese "abría" que escribí antes, ¡que dolor de ojos! (que viene de haber, que no de abrir)
Abrazos!
Hostias! ese "abría" que escribí antes, ¡que dolor de ojos! (que viene de haber, que no de abrir)
Abrazos!
Ismael Fanlo
*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial
*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial