TOP

Macro de araña para recopilar datos de varios archivos Excel

Descripción

En este artículo, consideraremos un ejemplo de una macro que puede buscar datos en muchos libros y registrar la información seleccionada en un archivo de informe separado.


Para hacer esto, abra su libro, vaya a Visual Basic Editor (Alt+F11) , agregar un nuevo módulo en blanco (Insert - Module) y copie este texto de macro allí:

  1. Sub Report_file()  
  2. 'moonexcel.com.ua  
  3. Application.ScreenUpdating = False ' desactivar la actualización de pantalla   
  4.   
  5.     Set report = Workbooks("Report.xlsb").Worksheets(1)  
  6.     find_field = report.[a1]  
  7.       
  8.     ' abrir el cuadro de diálogo para seleccionar archivos para importar   
  9.     FilesToOpen = Application.GetOpenFilename _  
  10.       (FileFilter:="All files (*.*), *.*", _  
  11.       MultiSelect:=True, Title:=" ¡Selecciona archivos! ")  
  12.   
  13.     If TypeName(FilesToOpen) = "Boolean" Then  
  14.         MsgBox " ¡Ningún archivo seleccionado! "  
  15.         Exit Sub  
  16.     End If  
  17.       
  18.     ' revisamos todos los archivos seleccionados uno por uno   
  19.     m = 1  
  20.     While m <= UBound(FilesToOpen)  
  21.         Set importWB = Workbooks.Open(Filename:=FilesToOpen(m))  
  22.         Set importWS = importWB.Worksheets(1)  
  23.       
  24.         ' vencimos a las células"  sombreros  "   
  25.         For Each cell2 In report.Range(report.Cells(1, 2), report.Cells(1, report.UsedRange.Columns.Count))  
  26.             On Error Resume Next: Err.Clear  
  27.             ' buscando significado en un libro abierto   
  28.             tr = importWS.UsedRange.Find(find_field).Row  
  29.             tc = importWS.UsedRange.Find(find_field).Column  
  30.             x = importWS.Range(importWS.Cells(tr, tc), importWS.Cells(20000, tc)).Find(report.Cells(m + 1, 1).Value).Row  
  31.             y = importWS.UsedRange.Find(cell2.Value).Column  
  32.             ' transferir los valores encontrados al archivo de informe   
  33.             report.Cells(m + 1, cell2.Column).Value = importWS.Cells(x, y).Value  
  34.         Next  
  35.           
  36.         importWB.Close savechanges:=False  
  37.         m = m + 1  
  38.     Wend  
  39.            
  40. Application.ScreenUpdating = True  
  41. End Sub  

Después de eso, puedes regresar a Excel y ejecutar nuestra macro a través del menú. Tools - Macro - Macros (Alt+F8) .