TOP

Macro aranha para coletar dados de vários arquivos Excel

YouLibreCalc for Excel logo

Descrição

Neste artigo, consideraremos um exemplo de macro que pode pesquisar dados em muitas pastas de trabalho e registrar as informações selecionadas em um arquivo de relatório separado.


Para fazer isso, abra seu livro, vá para Visual Basic Editor (Alt+F11) , adicione um novo módulo em branco (Insert - Module) e copie este texto da macro lá:

Sub Report_file()
'moonexcel.com.ua
Application.ScreenUpdating = False ' desabilitar atualização de tela 

    Set report = Workbooks("Report.xlsb").Worksheets(1)
    find_field = report.[a1]
    
    ' abra a caixa de diálogo para selecionar arquivos para importação 
    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="All files (*.*), *.*", _
      MultiSelect:=True, Title:=" Selecionar arquivos! ")

    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox " Nenhum arquivo selecionado! "
        Exit Sub
    End If
    
    ' examinamos todos os arquivos selecionados um por um 
    m = 1
    While m <= UBound(FilesToOpen)
        Set importWB = Workbooks.Open(Filename:=FilesToOpen(m))
        Set importWS = importWB.Worksheets(1)
    
        ' vencemos as células"  chapéu  " 
        For Each cell2 In report.Range(report.Cells(1, 2), report.Cells(1, report.UsedRange.Columns.Count))
            On Error Resume Next: Err.Clear
            ' procurando significado em um livro aberto 
            tr = importWS.UsedRange.Find(find_field).Row
            tc = importWS.UsedRange.Find(find_field).Column
            x = importWS.Range(importWS.Cells(tr, tc), importWS.Cells(20000, tc)).Find(report.Cells(m + 1, 1).Value).Row
            y = importWS.UsedRange.Find(cell2.Value).Column
            ' transferir os valores encontrados para o arquivo de relatório 
            report.Cells(m + 1, cell2.Column).Value = importWS.Cells(x, y).Value
        Next
        
        importWB.Close savechanges:=False
        m = m + 1
    Wend
         
Application.ScreenUpdating = True
End Sub

Depois disso, você pode retornar ao Excel e executar nossa macro através do menu Tools - Macro - Macros (Alt+F8) .