Actualizar automáticamente los datos de varios libros de Excel desde otro libro

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).

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.

No se si hay que crear alguna conexión o algo entre los libros o qué, pero 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!

Añade tu respuesta

Haz clic para o