VBA 동일한 파일 이름을 기반으로 여러 폴더의 Excel 파일을 하나의 워크시트로 결합

VBA 동일한 파일 이름을 기반으로 여러 폴더의 Excel 파일을 하나의 워크시트로 결합

VBA: 파일 이름의 첫 번째 문자 4개가 동일하다는 점을 기준으로 여러 폴더의 Excel 파일을 하나의 워크시트로 결합합니다.xlsx


설명:

고객 ID가 001~100인 파일이 있습니다. 각 고객은 서로 다른 폴더(폴더1-3)에 생성되는 3개의 서로 다른 Excel 보고서(### Report1-3)를 가지고 있습니다.

예: 폴더 1에는
001 Report1.xlsx
...
100 Report1.xlsx 가 포함됩니다.


폴더 2에는 001 Report2.xlsx
...
100 Report2.xlsx 가 있습니다.


폴더 3에는 001 Report3.xlsx
...
100 Report3.xlsx 가 있습니다.

이러한 각 파일에는 값이 포함된 시트가 하나만 포함되어 있습니다(수식이나 피벗 테이블 없음). 각 보고서 1, 보고서 2, 보고서 3에는 서로 다른 열/행 집합이 있습니다.


질문:

각 고객 ID "###"에 대해 하나의 통합 문서를 만들고 보고서를 시트로 갖고 싶습니다. (### 보고서 1) (### 보고서 2) (### 보고서 3) (원하는 모든 문서를 결합합니다. 하나의 통합 문서로 각 보고서 이름 시작 부분에 처음 4자가 포함됩니다)

예를 들어 고객: 001 시트 1 = 001 Report1 시트 2 = 001 Report2 시트 3 = 001 Report3을
포함하는 "001 AllReports.xlsx" 통합 문서를 하나 만듭니다.


그런 다음 고객 ID 002로 이동하여 동일한 작업을 수행합니다.

추가로 확인해야 할 사항이 있으면 알려주시기 바랍니다. 감사합니다. 진심으로 감사드립니다!


몇 가지 메모/생각:

저는 3개의 필드가 있는 병합 매크로 템플릿을 만들려고 했습니다. 여기서 폴더 1, 폴더 2, 폴더 3 경로를 입력한 다음 고객 ID를 기준으로 문서 병합을 진행합니다.

내가 기반으로 하기 전에 기본 파일을 병합하려면: https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet.copy

쿼리를 사용하여 수행하는 것에 대해서도 궁금했지만 Report1-3에서 열이 일관되지 않기 때문에 이것이 옵션인지 확실하지 않습니다.

이 예제/VBA는 모든 파일이 동일한 폴더에 있는 경우 유용합니다. 다른 폴더 경로를 추가하고 고객 ID ###가 포함된 이름을 기반으로 하는 것이 좋을 것입니다.

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

관련 정보