Hola! Estoy metiéndome nuevamente en el tema programación OOBasic, dicen que a la tercera va la vencida. :-)
Cuando por copiar y pegar desde internet, se nos llena un documento de vínculos, es muy tedioso ir a Editar > Vínculos, y uno por uno irlos eliminando. Así que pensé en programarlo, pero aunque he sabido acceder a los diferentes objetos que son vínculos, no encuentro la manera de hacerlo. Llegué hasta aquí: http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Text/Link_Targets y no me aclaró gran cosa a parte de lo que ya sabía. Luego vi que alguien tenía un problema parecido: http://api.openoffice.org/servlets/ReadMsg?listName=dev&msgNo=13315 Pero como él, no supe utilizar el método breakLink() que provee la interfaz: http://api.openoffice.org/docs/common/ref/com/sun/star/embed/XLinkageSupport.html La sugerencia que le ofrecen en ese hilo, aunque funcional, no parece muy elegante. Y creo que habría que ver eso del breakLink(). ¿Cómo podría acceder a esa interfaz? Los vínculos que hay que eliminar pueden ser de cualquier tipo: imágenes, secciones, etc... El código que ando desarrollando es este: (perdonen mi poca profesionalidad, soy consciente de que en vez de recorrer la matriz, sería más elegante una enumeración, pero no me aclaro mucho con estas últimas y he ido a lo conocido) '------------------------------------------------------------ ' RompeTodosVinculos() ' Permite eliminar todos los vínculos del documento para evitar la ' tediosa tarea de interrumpirlos uno a uno mediante Editar > Vínculos '------------------------------------------------------------ Sub RompeTodosVinculos() Dim oDocumento, oTipoVinculos, oVinculos, oVinculo As Object Dim i, j As Integer oDocumento = ThisComponent ' referencia los diferentes tipos de vínculos del documento oTipoVinculos = oDocumento.Links ' para cada tipo de vínculos For i = 0 To UBound(oTipoVinculos.ElementNames()) ' obtiene la colección de vínculos de ese tipo oVinculos = oTipoVinculos.getByName(oTipoVinculos.ElementNames(i)) ' si hay vínculos de ese tipo If oVinculos.hasElements Then ' para cada elemento For j = 0 To UBound(oVinculos.ElementNames()) ' obtiene el vínculo oVinculo = oVinculos.getByName(oVinculos.ElementNames(j)) ' ------------------------------------------------ ' aquí debería haber algo tan sencillo como ' oVinculo.remove() ' y todos tan felices, pero no. :-( ' ------------------------------------------------ Next j End If Next i End Sub Gracias, -- Ismael Fanlo El mejor buscador de alojamiento web: http://hosthostings.com Ofimática y software libre: http://superalumnos.net ¡Locos por Drupal!: http://drupalmania.com --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
