Cambio de hipervínculos absolutos a relativos (Microsoft Word)
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.