Linda tiene un documento de Word que contiene muchos (más de 1800) hipervínculos a recursos en Internet. Necesita convertir todos los hipervínculos para que no sean absolutos en una URL en la Web, sino que apunten a una ubicación relativa en una unidad USB. El nombre del archivo HTML será el mismo en la unidad USB que en la Web, es solo la ubicación de ese archivo HTML lo que está cambiando. Linda se pregunta cuál es la mejor manera de realizar la conversión.

La mejor forma es realizar las conversiones mediante una macro. Cada hipervínculo en su documento se almacena en la colección Hipervínculos a la que se puede acceder fácilmente a través de VBA. Esto le permite recorrer la colección de hipervínculos, examinar las direcciones de cada uno y luego realizar modificaciones en ellos. Aquí hay un ejemplo de tal macro:

Sub ConvertHyperlinks()

Dim sNewBase As String     Dim sFile As String     Dim sNewFile As String     Dim sChanged As String     Dim sNotChanged As String     Dim sTemp As String     Dim J As Integer     Dim h As Hyperlink

sNewBase = "c:\myplace\"

sChanged = ""

sNotChanged = ""



For Each h In ActiveDocument.Hyperlinks         sTemp = h.Address         If Left(sTemp, 5) = "https:" Then             sFile = ""

For J = Len(sTemp) To 2 Step -1                 If Mid(sTemp, J, 1) = "/" Then                     sFile = Right(sTemp, Len(sTemp) - J)

Exit For                 End If             Next J

If sFile > "" Then                 sNewFile = sNewBase & sFile                 h.Address = sNewFile                 sChanged = sChanged & sTemp & " (changed to " & _                   sNewFile & ")" & vbCrLf             Else                 sNotChanged = sNotChanged & sTemp & vbCrLf             End If         Else             sNotChanged = sNotChanged & sTemp & vbCrLf         End If     Next h

Documents.Add     Selection.TypeText "The following hyperlinks were modified:" & vbCrLf     Selection.TypeText sChanged & vbCrLf & vbCrLf     Selection.TypeText "The following hyperlinks were not modified:" & vbCrLf     Selection.TypeText sNotChanged & vbCrLf End Sub

La macro comienza recorriendo la colección de hipervínculos. Cada dirección se asigna a la variable sTemp, que luego se verifica para ver si comienza con «https:». Algunos hipervínculos, por ejemplo, los de direcciones de correo electrónico o de archivos existentes, no comienzan con estos caracteres.

Si se encuentra una coincidencia, el código retrocede a través de la dirección para encontrar la barra final en esa dirección. Cuando se encuentra, sFile se establece para que sea igual a todo después de la barra final, lo que significa que será igual al archivo HTML.

Una nota al margen interesante aquí es que cuando crea un hipervínculo en un documento de Word, Word procesa un poco lo que escribe en comparación con lo que realmente está almacenado en el hipervínculo. Por ejemplo, supongamos que escribe lo siguiente en un documento:

www.Tips.net

Word lo reconoce automáticamente como un sitio web y lo convierte en un hipervínculo. (Suponiendo, por supuesto, que tiene Word configurado para realizar conversiones URL automáticas). Si observa la dirección realmente almacenada en el hipervínculo creado, verá lo siguiente:

https://www.Tips.net/

Debido a que esta dirección comienza con «https:», la macro la considerará algo procesable. Sin embargo, el bucle que retrocede por la dirección buscando el último carácter de barra lo encontrará al final. Esto significa que sFile estará vacío debido a este código:

sFile = Right(sTemp, Len(sTemp) - J)

La longitud de sTemp y J es exactamente la misma para el último carácter de la cadena, por lo que sFile termina conteniendo los 0 caracteres más a la derecha, lo que significa que está vacío. La conclusión es que no contendrá un nombre de archivo, por lo que la URL original no se convierte en otra cosa.

Para que la macro funcione correctamente en su sistema, querrá cambiar la cadena sNewBase para que contenga lo que desee agregar al principio de las direcciones procesadas. Tenga en cuenta que, tal como está escrito, la cadena predeterminada que se agrega al principio de un archivo es «c: \ myplace \». Por lo tanto, «` link: / privacy «se cambia a» c: \ myplace \ privacy «. Esta dirección convertida no es, estrictamente, un hipervínculo relativo. Un hipervínculo relativo no tendría los caracteres c: \ al principio, por lo que terminaría siendo algo como «\ myplace \ privacy». Una vez más, puede cambiar el valor de sNewBase para que sea el que desee para que los hipervínculos convertidos se vean exactamente como desea.

No lleva mucho tiempo ejecutar la macro; es muy rápido, independientemente de cuántos hipervínculos haya en su documento. Cuando la macro está completa, crea un nuevo documento que muestra los hipervínculos modificados y los no modificados.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.

https: – wordribbon.tips.net-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador] `.

WordTips es su fuente de formación rentable en Microsoft Word.

(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (12931) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365.