Cambiar vincula automáticamente

Hola Fejoal. Tengo unas formulas que son vinculos a otros libros. El problema es que esos libros cambian de nombre. Ej: =C:\DOCUMENTOS\[PERSONAL_052003.xls]HOJA1'!$E$14; DONDE _05 HACE REFERENCIA AL MES Y 2003 AL AÑO. COMO HAGO PARA QUE _05 LO PUEDA DIGITAR EN UNA CELDA Y LA FORMULA SE ACTUALIZE CON RESPECTO AL VALOR QUE SE DIGITE EN DICHA CELDA.

1 Respuesta

Respuesta
1
Diaz
Existen un par de vías para resolver este problema.
Una de ellas consiste en aprovechar la potencia de la función INDIRECTO, que convierte una cadena de texto en una dirección válida.
Supongamos que el mes estuviera en la celda D5 y el año en E5.
Entonces, la fórmula que trae tal valor será:
=INDIRECTO("=C:\DOCUMENTOS\[PERSONAL_" & TEXTO(D5,"00") & E5 &".xls]HOJA1'!$E$14")
El operador ampersand (&) obra de concatenador de textos para producir una única cadena de texto.
Nota que usé coma para separar argumentos en la función TEXTO(), tal vez uses punto y coma. En ese caso simplemente reemplaza uno por otro.
Al cambiar, el contenido de esas celdas, esta fórmula buscará el archivo correspondiente.
Pero -siempre hay uno- esta función exige que el archivo en cuestión esté abierto junto con el que contiene la fórmula indirecto.
Si esto fuese un inconveniente para ti, tendrás que recurrir a una macro que ejecute el reemplazo.
Activa el editor de Visual Basic (presiona Alt+F11), inserta un nuevo módulo ("Insertar", "Módulo") y pega el siguiente código:
Sub Cambiames()
'Ingresa aquí el rango de celdas donde debe efectuar el reemplazo
RangoForm = "A2:B30"
'--------------------- gracias...
FechaAct = ActiveCell.Formula
If Len(FechaAct) > 0 And Mid(FechaAct, 1, 1) = "=" Then
FechaAct = Mid(FechaAct, InStr(1, FechaAct, "_") + 1, 6)
FechaNue = Format(Range("D5").Value, "00") & Range("E5").Value
Range(RangoForm).Replace What:=FechaAct, Replacement:=FechaNue, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
Else
MsgBox "Para el reemplazo de fechas, debe estar en cualquier celda con la fórmula a cambiar", vbInformation, "ESTA CELDA NO TIENE FORMULA!!!"
End If
End Sub
Al inicio del código veras una variable que indica en qué rango de la hoja activa debe efectuar el reemplazo.
Coloca allí el tuyo.
Cierra el Editor de Visual Basic y graba el archivo.
Para que funcione correctamente, debes elegir una celda que contenga la fórmula con la dirección a cambiar. Luego ejecuta la macro Cambiames
En este caso, no necesitas la función INDIRECTO ni que el archivo nuevo esté abierto. Basta, desde luego, que tal archivo exista.
aclarando qué entendí mal o qué faltó.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas