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]

Responder a