VBA Combinando arquivos Excel de várias pastas em uma planilha com base no mesmo nome de arquivo

VBA Combinando arquivos Excel de várias pastas em uma planilha com base no mesmo nome de arquivo

VBA: Combine arquivos Excel de várias pastas em uma planilha com base nos mesmos 4 primeiros caracteres no nome do arquivo.xlsx


Descrição:

Existem arquivos com ID de cliente de 001 a 100. Cada cliente possui 3 relatórios Excel diferentes (### Relatório1-3), que são gerados em pastas diferentes (Pastas1-3).

Por exemplo: A pasta 1 terá:
001 Report1.xlsx
...
100 Report1.xlsx

A pasta 2 terá:
001 Report2.xlsx
...
100 Report2.xlsx

A pasta 3 terá:
001 Report3.xlsx
...
100 Report3.xlsx

Cada um desses arquivos contém apenas uma planilha com Valores (sem fórmulas nem tabelas dinâmicas). Cada Relatório 1, Relatório 2, Relatório 3 possui um conjunto diferente de colunas/linhas.


Pergunta:

Gostaria de criar uma pasta de trabalho para cada ID de cliente "###" e ter os relatórios como planilhas (### Relatório1) (### Relatório 2) (### Relatório 3) (Todos os documentos desejados a serem combinados em uma pasta de trabalho terá os primeiros quatro caracteres no início do nome de cada relatório)

Por exemplo, para Cliente: 001
Crie uma pasta de trabalho "001 AllReports.xlsx" que tenha:
Folha 1 = 001 Relatório1
Folha 2 = 001 Relatório2
Folha 3 = 001 Relatório3

Em seguida, vá para o ID do cliente 002 e faça o mesmo.

Por favor, deixe-me saber se mais alguma coisa precisa ser esclarecida. Obrigado, eu realmente aprecio isso!


Algumas notas/pensamentos:

Eu estava pensando em criar um modelo de macro de fusão que possui 3 campos. Onde preencho os caminhos da Pasta 1, depois da Pasta 2 e da Pasta 3 e, em seguida, prossigo para mesclar os documentos com base no ID do Cliente.

Para mesclar arquivos básicos antes de eu me basear em: https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet.copy

Também fiquei curioso em fazer isso com uma consulta, mas como as colunas não são consistentes no Relatório1-3, não tenho certeza se seria uma opção.

Este exemplo/VBA é bom se todos os arquivos estiverem na mesma pasta: seria ótimo adicionar os diferentes caminhos de pasta e baseá-los nos nomes que contêm o ID do cliente ###.

Sub ConslidateWorkbooks()
'Created by Sumit Bansal from https://trumpexcel.com
Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet
Application.ScreenUpdating = False
FolderPath = Environ("userprofile") & "\Desktop\Test\"
Filename = Dir(FolderPath & "*.xls*")
Do While Filename <> ""
 Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
 For Each Sheet In ActiveWorkbook.Sheets
 Sheet.Copy After:=ThisWorkbook.Sheets(1)
 Next Sheet
 Workbooks(Filename).Close
 Filename = Dir()
Loop
Application.ScreenUpdating = True
End Sub

informação relacionada