Cambio de una gran cantidad de hipervínculos (Microsoft Excel)
Wendy tiene una sola hoja de cálculo de Excel que contiene más de 1200 hipervínculos a archivos TIFF. (Estos son hipervínculos, no enlaces regulares). Excel falló y tuvo que cerrarse, por lo que Emily usó los archivos guardados automáticamente para recuperar el archivo previamente guardado. Ahora todos los hipervínculos que funcionaban anteriormente no funcionan. Tenía los hipervínculos a las imágenes en una unidad de red compartida, pero AutoSave cambió los hipervínculos para hacer referencia a la unidad C :. Se pregunta si hay una manera fácil de volver a colocarlos en la unidad de red compartida.
A primera vista, podría parecer que podría usar la función Buscar y reemplazar habitual de Excel para encontrar la designación del disco duro (como en el archivo: // c 🙂 y reemplazarlo con una unidad de red (como en el archivo: // unidad compartida). El problema es que este enfoque solo aborda una parte del problema: solo cambia la parte mostrada del hipervínculo, no el hipervínculo subyacente en sí. La única forma de acceder al hipervínculo es mediante el uso de una macro.
Suponiendo que todos los hipervínculos que deben cambiarse están en la misma hoja de trabajo, puede usar la siguiente macro:
Sub FixHyperlinks1() Dim wks As Worksheet Dim hl As Hyperlink Dim sOld As String Dim sNew As String Set wks = ActiveSheet sOld = "c:\" sNew = "S:\Network\" For Each hl In wks.Hyperlinks hl.Address = Replace(hl.Address, sOld, sNew) Next hl End Sub
Todo lo que necesita hacer es cambiar los valores asignados a las variables sOld y sNew. Si obtiene un error cuando intenta ejecutar la macro, un error con la línea que contiene la función Reemplazar, es porque la función Reemplazar no está disponible en todas las versiones de Excel. En ese caso, debería utilizar la siguiente macro, en su lugar:
Sub FixHyperlinks2() Dim wks As Worksheet Dim hl As Hyperlink Dim sOld As String Dim sNew As String Set wks = ActiveSheet sOld = "c:\" sNew = "S:\Network\" For Each hl In wks.Hyperlinks hl.Address = Application.WorksheetFunction. _ Substitute(hl.Address, sOld, sNew) Next hl End Sub
Tenga en cuenta que la única diferencia es el uso de la función de hoja de cálculo Sustituir.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (8622) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:
link: / excelribbon-Changing_Huge_Numbers_of_Hyperlinks [Cambiando enormes números de hipervínculos]
.