Actualizar Datos Vínculados entre Libros de Excel

Obed

22/08/12

Facil y rapido

Haz tu trabajo con mucha rapidez y de manera más sencilla.

Ponte en contacto.

Soporte

Resuelve todas tus dudas y recibe la mejor asesoría en en los proyectos que desarrolles.

¡Contáctanos!

Reportes

Desempéñate mejor en tus tareas con nuestros reportes en Excel.

¡Te decimos como lograrlo!

Facil y rapido

Haz tu trabajo con mucha rapidez y de manera más sencilla.

Ponte en contacto.

Soporte

Resuelve todas tus dudas y recibe la mejor asesoría en en los proyectos que desarrolles.

¡Contáctanos!

Reportes

Desempéñate mejor en tus tareas con nuestros reportes en Excel.

¡Te decimos como lograrlo!

 

Hace algunos días un amable lector del Blog me contacto y me expuso el problema que tenía para actualizar datos a través de hipervínculos entre sus múltiples libros de Excel.

 
Se me hizo interesante el tema, y les expongo el caso:
 
El usuario maneja alrededor de 50 libros de Excel, algunos vinculados entre sí y posteriormente concentra la información de todos estos libros en otro libro de Excel que utiliza como concentrador y archivo master.
 
Para efectos prácticos del ejemplo únicamente utilizaremos 3 libros:
1.- Existe un Libro que llamaremos [Libro1.xls] en dónde se capturan datos.
2.- Existe otro Libro que llamaremos [Libro2.xls] que también se capturan datos y adicional también tiene vinculada información de [Libro1.xls].
3.- Existe un libro más que llamaremos[Libro3.xls] que concentra la información de [Libro1.xls] y [Libro2.xls] y que cada final de mes se tiene que actualizar con los cambios que haya habido en ambos libros.
 
Ahora bien, el problema radica en esto:
1.- Cuando el usuario ingresa datos en el [Libro1.xls], no se actualiza la información de [Libro2.xls] y [Libro3.xls].
2.- Cuando se ingresan datos en [Libro2.xls] tampoco son actualizados en [Libro3.xls].
 
Una solución sencilla cuando son 3 libros sería mantener los 3 libros de Excel abiertos y así cuando se realicen cambios en algunos de ellos se actualizará la información vinculada de forma automática. 
 
¿Pero que pasa cuando estos Libros son 50 o más, y no toda la captura de información de cada uno de los libros depende de una sola persona?.
 
Es demasiado complicado mantener todos estos archivos abiertos para que se actualice toda la información y además si lo hicieran así, es demasiado tedioso, propenso a errores  y consumiría algunas horas que bien pudiera ser aprovechadas en realizar alguna otra tarea.  Se tiene que abrir libro por libro para actualizar los vínculos porque recordemos que algunos de estos 50 libros están vinculados entre sí.
 
¿Se imaginan hacer todo ésto de forma manual?
 
  • El tiempo que se llevaría abrir todos y cada uno de los libros.
  • Lo aburrido que esto resultaría de hacerlo cotidianamente.
  • Y más grave aún, sí se olvidan u omiten abrir un solo archivo falseara toda la información que están generando en el archivo Master concentrador y probablemente no se den cuenta hasta días ó meses después y ya sea demasiado tarde corregir el error.
Si están en una situación similar pueden agilizar su trabajo con este código que les comparto.

Lo tienen que agregar en un módulo estándar en el Libro de Excel en dónde concentrarán la información  final.
 
Sub ActualizarLinks()
Dim res As Long

 On Error Resume Next
 Application.ScreenUpdating = False
   With ThisWorkbook
     res = ActLink(.LinkSources)
       If res = 0 Then
         .UpdateLink Name:=.LinkSources
       End If
    End With
 Application.ScreenUpdating = True
End Sub

Private Function ActLink(lSource As Variant) As Long
Dim objWB As Workbook, intC As Integer, res As Long
  
  If Not IsEmpty(lSource) Then
    For intC = 1 To UBound(lSource)
     Set objWB = Workbooks.Open(lSource(intC))
     res = ActLink(objWB.LinkSources)
      If res = 0 Then
        objWB.UpdateLink Name:=objWB.LinkSources
        objWB.Close True
      End if
    Next
     ActLink = -1
  End If
 End Function
Copyright © 2022 Exceltrabajaporti.com - Todos los derechos reservados.