es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convirtiendo patrones en hipervínculos

Estoy tratando de reemplazar todas las instancias de un patrón con un hipervínculo derivado del patrón.

El patrón tiene la siguiente forma 123 PALABRA 4568, donde PALABRA es siempre la misma pero los números (y la cantidad de números) cambian. Por ejemplo, 1948 PALABRA 12, 231 PALABRA 3948, 92 PALABRA 1029.

El hipervínculo depende del número, por ejemplo, para 1948 PALABRA 12 sería algo como www.palabra.com/1948/12.html.

Usando comodines, puedo encontrar todas las instancias del patrón y reemplazarlas con un hipervínculo solo a word.com:

Sub InsertLinksTB()

Set Rng = ActiveDocument.Range

With Rng.Find
    SearchString = "[0-9]{1,9} PALABRA [0-9]{1,9}"
    .MatchWildcards = True
    Do While .Execute(findText:=SearchString, Forward:=False) = True
        Link = "www.palabra.com"

        ActiveDocument.Hyperlinks.Add Anchor:=Rng, _
        Address:=Link, _
        SubAddress:="", ScreenTip:="", TextToDisplay:=Rng.Text
        Rng.Collapse wdCollapseStart
    Loop
End With

End Sub

No puedo descifrar qué hacer con SubAddress para generar el hipervínculo completo para cada instancia del patrón, dada la utilización de comodines.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para generar el hiperenlace completo para cada instancia del patrón utilizando los caracteres comodín en VBA, puedes utilizar el siguiente código:

    Sub InsertarEnlacesTB()
    
        Set Rng = ActiveDocument.Range
    
        With Rng.Find
            SearchString = "[0-9]{1,9} PALABRA [0-9]{1,9}"
            .MatchWildcards = True
            Do While .Execute(findText:=SearchString, Forward:=False) = True
                'Extrayendo los números del patrón
                num1 = Split(Rng.Text, " ")(0)
                num2 = Split(Rng.Text, " ")(2)
                'Creando la dirección del hiperenlace utilizando los números extraídos
                Direccion = "https://www.palabra.com/" & num1 & "/" & num2 & ".html"
                'Agregando el hiperenlace al rango seleccionado
                ActiveDocument.Hyperlinks.Add Anchor:=Rng, _
                Address:=Direccion, _
                SubAddress:="", ScreenTip:="", TextToDisplay:=Rng.Text
                Rng.Collapse wdCollapseStart
            Loop
        End With
    
    End Sub
    

    En este código, primero extraemos los dos números del patrón utilizando la función Split. Luego, creamos la dirección del hiperenlace concatenando los números extraídos con las partes fijas de la dirección ("https://www.palabra.com/" y ".html"). Finalmente, agregamos el hiperenlace al rango seleccionado utilizando el método Hyperlinks.Add.

    Esto debería reemplazar cada instancia del patrón con el hiperenlace correspondiente.

Comments are closed.