Agregar o reemplazar texto dentro de hipervínculos

Agregar o reemplazar texto dentro de hipervínculos

Estoy muy confundido después de intentar explorar cómo se puede hacer esto. Es muy simple pero aún no puedo encontrar una solución.

Lo que deseo saber es lo siguiente. Tengo tres documentos separados, todos los cuales están vinculados hasta cierto punto; los datos se ingresan desde un documento (1. entrada maestra) y se resumen en las tres hojas de cálculo.

Cada documento tiene una distribución idéntica, los únicos factores variables son las fechas y, para la entrada maestra, tenemos valores numéricos.

En forma de ilustración se ve así:

a. 1 Entrada maestra --> (alimenta) 2,3 b. 2 --> (alimenta) 3 y 4 c. 3 --> (alimenta) 4

Lo que deseo saber es que en los documentos 2, 3 y 4... los datos cambian cada año. Tengo muchos 'hipervínculos' de la hoja de cálculo como ejemplo:

2015 =" \Ingresos diarios\2015[Ingresos 2015.xls]Resumen del año'!$C$160"

2016 =" \Ingresos diarios\2016[Ingresos 2016.xls]Resumen del año'!$C$160"

2017 =" \Ingresos diarios\2017[Ingresos 2017.xls]Resumen del año'!$C$160"

De lo anterior, la única variable que necesito cambiar es el año, ¿hay algún código/macro, etc. que pueda usar para reemplazar elAÑOdentro del hipervínculo. Tenga en cuenta que la ruta del archivosiemprepermanece igual.

Soy plenamente consciente de laencontrar y reemplazarfunción sin embargo deseo que esto sea fácil de usar y fácil de usar.

¡Por favor ayúdame, gracias!

Respuesta1

En primer lugar, sigues hablando de hipervínculos. Creo que lo que quieres decir son fórmulas que hacen referencia a otros archivos. Esos no son hipervínculos. Aquí está la solución si lo que realmente quería decir eran hipervínculos:


Para responder a su pregunta real: Sí, hay una macro para eso. Seguro. Creo que lo que necesitas saber es el Worksheet.Hyperlinksobjeto. Puede recorrer cada hipervínculo en cada hoja de trabajo y reemplazar la dirección con lo que desee. Aquí hay un ejemplo de fragmento:

Sub ChangeHyperlinks()
    Dim ws As Worksheet
    Dim hyp As Hyperlink
    For Each hyp In ws.Hyperlinks
        hyp.Address = Replace(hyp.Address, "2015", "2016")
    Next
End Sub

Vas a tener que modificarlo si no quieres cambiarcadahipervínculo agregando declaraciones condicionales como If InStr(1, hyp.Address, "\Daily Revenue\2015") Then. Puede usar el Workbook_Openevento para ejecutarlo cada vez que se abre el archivo, seleccionar el año correcto según el nombre del archivo y luego ejecutar el reemplazo de los hipervínculos. Sí, esto dispararíacadavez que se abre el archivo incluso si ya es correcto. Dependiendo de cuántos hipervínculos tenga, esto podría estar bien o podría detener todo.


Y aquí hay un fragmento de código si lo que realmente quería decir eran fórmulas. Nuevamente, tendrás que adaptarlo más a tus necesidades, pero esto debería ayudarte a comenzar.

Private Sub Workbook_Open()
    Dim i As Integer
    Dim srcArray As Variant
    srcArray = ThisWorkbook.LinkSources(xlLinkTypeExcelLinks)
    For i = 1 To UBound(srcArray)
        Debug.Print srcArray(i)
        ThisWorkbook.ChangeLink srcArray(i), Replace(srcArray(i), "2015", "2016")
    Next
End Sub

Además, si te refieres a fórmulas, entonces tu pregunta es un duplicado deDesbordamiento de pila.

Respuesta2

Hay algunas ambigüedades en su pregunta. Esta respuesta supone que está hablando de referencias de celdas en otros libros, como se ilustra en sus ejemplos, en lugar de hipervínculos, y que la tarea es configurar las referencias como ajustables por año, en lugar de reescribir todas las fórmulas cada año.

Primero, necesitas una referencia del año en alguna parte. No está claro cuándo o de qué manera desea que cambie el año (¿automáticamente el 1 de enero de cada año? ¿En una fecha de su elección? ¿Quiere poder cambiar el año en cualquier momento?). Así que basaré esto en una solución genérica. Elija una celda para contener la referencia del año. Para mi ejemplo, usaré la celda Z1de la hoja de trabajo que contiene las referencias de celda en su ejemplo. Si desea poder cambiar el año a voluntad o en la fecha que elija, simplemente ingrese Z1el año de cuatro dígitos. Si desea que el año cambie automáticamente el 1 de enero, utilice =YEAR(TODAY()).

Luego, en lugar de codificar el año en cada fórmula, concatene una referencia Z1y use la función INDIRECTA para convertir la cadena de texto en una referencia de celda. Por ejemplo:

          '\Daily Revenue\2015[Revenue 2015.xls]Year Summary'!$C$160   becomes
INDIRECT("'\Daily Revenue\"&Z1&"[Revenue "&Z1&".xls]Year Summary'!$C$160")

Con una hoja de trabajo existente, deberá realizar un cambio único para modificar las referencias de celda. Después de eso, puedes cambiar el año cuando quieras cambiando la Z1entrada.

información relacionada