Apagada docs

Aprendiendo a programar el pasado

Herramientas de usuario

Herramientas del sitio


es:basic:vba:arreglarlink

Este programa es una macro para office 2003 (ignoro si funcionará en office más modernos) que permite dividir los links de forma que sean más legibles, y que además coloca comillas angulares simples (‹›) a su alrededor, como se haría en una cita bibliográfica.

(Probablemente se podría portar a Open Office Basic si supiera qué objeto utilizar en lugar de hyperlink y ThisDocument.hyperlinks)

Attribute VB_Name = "Arreglar_Link_v2"
 
'
'Añade espacios de separación en el texto de los hipervínculos,
'pero se asegura de que no se añadan en el URI
'(si se hace a mano, se añaden en el URI)
'
Sub arreglalink_todo()
Dim t As String, u As String
Dim finpalabra As String
Dim c As String
Dim i2 As Integer, f As Integer
 
Dim h As Hyperlink
finpalabra = "/?+._"
 
For Each h In ThisDocument.Hyperlinks
    t = h.TextToDisplay
    u = h.Address
    'borrar todos los caracteres de separación de t
    i2 = InStr(t, ChrW(8204))
    While i2 > 0
        t = Left(t, i2 - 1) + Mid(t, i2 + 1)
        i2 = InStr(t, ChrW(8204))
    Wend
 
    'Añadir caracteres de separación tras todos los de finpalabra
    For f = 1 To Len(finpalabra)
        c = Mid(finpalabra, f, 1)
        i2 = InStr(t, c)
        While i2 > 0
        'Si el siguiente carácter es igual, no reemplaza.
        If Mid(t, i2 + 1, 1) <> c Then
            t = Left(t, i2) + ChrW(8204) + Mid(t, i2 + 1)
            i2 = InStr(i2 + 1, t, c)
        Else
            i2 = i2 + 1
        End If
        Wend
    Next
 
    'borrar todos los caracteres de separación de u
    i2 = InStr(u, ChrW(8204))
    While i2 > 0
        u = Left(u, i2 - 1) + Mid(u, i2 + 1)
        i2 = InStr(u, ChrW(8204))
    Wend
 
    Debug.Print u
    '&2039, &203A: comilla angular simple.
    If Left(t, 1) <> ChrW(&H2039) Then t = ChrW(&H2039) & t
    If Right(t, 1) <> ChrW(&H203A) Then t = t & ChrW(&H203A)
    'Evita separación al final
    If Right(t, 2) = ChrW(8204) + ChrW(&H203A) Then t = Left$(t, Len(t) - 2) & ChrW(&H203A)
    h.TextToDisplay = t
    h.Address = u
 
    Debug.Print t
Next
End Sub
'Añade espacios de separación en el texto de los hipervínculos,
'pero se asegura de que no se añadan en el URI
'(si se hace a mano, se añaden en el URI)
'
Sub arreglalink_seleccion()
 
Dim t As String, u As String
Dim finpalabra As String
Dim c As String
Dim i2 As Integer, f As Integer
 
Dim h As Hyperlink
finpalabra = "/?+"
 
For Each h In Selection.Hyperlinks
    t = h.TextToDisplay
    u = h.Address
    'borrar todos los caracteres de separación de t
    i2 = InStr(t, ChrW(8204))
    While i2 > 0
        t = Left(t, i2 - 1) + Mid(t, i2 + 1)
        i2 = InStr(t, ChrW(8204))
    Wend
 
    'Añadir caracteres de separación tras todos los de finpalabra
    For f = 1 To Len(finpalabra)
        c = Mid(finpalabra, f, 1)
        i2 = InStr(t, c)
        While i2 > 0
        'Si el siguiente carácter es igual, no reemplaza.
        If Mid(t, i2 + 1, 1) <> c Then
            t = Left(t, i2) + ChrW(8204) + Mid(t, i2 + 1)
            i2 = InStr(i2 + 1, t, c)
        Else
            i2 = i2 + 1
        End If
        Wend
    Next
 
    'borrar todos los caracteres de separación de u
    i2 = InStr(u, ChrW(8204))
    While i2 > 0
        u = Left(u, i2 - 1) + Mid(u, i2 + 1)
        i2 = InStr(u, ChrW(8204))
    Wend
 
    Debug.Print u
    '&2039, &203A: comilla angular simple.
    If Left(t, 1) <> ChrW(&H2039) Then t = ChrW(&H2039) & t
    If Right(t, 1) <> ChrW(&H203A) Then t = t & ChrW(&H203A)
    'Evita separación al final
    If Right(t, 2) = ChrW(8204) + ChrW(&H203A) Then t = Left$(t, Len(t) - 2) & ChrW(&H203A)
    h.TextToDisplay = t
    h.Address = u
 
    Debug.Print t
Next
End Sub
Este sitio web utiliza cookies. Al utilizar el sitio web, usted acepta almacenar cookies en su computadora. También reconoce que ha leído y entendido nuestra Política de privacidad. Si no está de acuerdo abandone el sitio web.Más información
es/basic/vba/arreglarlink.txt · Última modificación: 2016/01/12 09:10 por nepenthes