Actualizar datos de un libro de excel desde otro libro en función de una lista de validación
Hola a todos.
Estoy intentando implementar un código en VBA para Excel que me haga lo siguiente:
Tengo varios libros (destino1, destino2,...) donde varias de las columnas deben tomar el dato de otro libro externo (origen).
Los datos a buscar desde el libro destino se seleccionan cada uno en una lista desplegable.
Cada uno de los libros esta en una carpeta diferente.
Cada uno de los libros, incluido el origen, tiene varias hojas, y es posible que en el futuro se añadan más.
Las columnas de los datos que hay que leer tienen el mismo nombre en todos los libros.
Son varios cientos de datos, por lo que no se si sería buena idea que se actualizase en tiempo real todo o tal vez solo cuando le indiquemos de alguna manera que se actualice (al abrir el archivo o pulsando un botón).
Estaba intentando hacerlo con lookupv pero resulta que solo se me actualizan los datos cuando modifico el nombre del dato que quiero buscar. Me explico:
En el libro destino1:
Componentes: Datos:
Componente1 Dato1
Componente2 Dato2
Componente3 Dato3
En el libro origen:
Componentes: Datos:
Componente1 Dato1
Componente2 Dato2
Componente3 Dato3
Si reescribo la palabra componente1 en destino1, automáticamente me actualiza su valor, si no, aunque cambie su valor en origen, el libro destino mantiene el antiguo.
El objetivo es tener el libro origen como base de datos común para los libros destino, solo es eso.
El código que había pensado es el siguiente:
------------------------------
Function VLookAllSheets(Look_Value As Variant, Tble_Array As Range, _
Col_num As Integer, Optional Range_look As Boolean)
Dim wSheet As Worksheet
Dim vFound
On Error Resume Next
For Each wSheet In Workbooks("origen.xlsx").Worksheets
With wSheet
Set Tble_Array = .Range(Tble_Array.Address)
vFound = WorksheetFunction.VLookup _
(Look_Value, Tble_Array, _
Col_num, Range_look)
End With
If Not IsEmpty(vFound) Then Exit For
Next wSheet
Set Tble_Array = Nothing
VLookAllSheets = vFound
End Function
-----------------------------------------------
Básicamente lo he copiado de alguna web. Es la primera vez que programo algo en VBA, así que no tengo mucha idea.
El caso es que no se me actualiza. Sin embargo con la función buscarv empleada tal cual en una celda se actualiza en tiempo real.
Utilizo Excel 2010 y 2013.
¿Alguien podría echarme una mano...?
Muchas gracias!