Sub ConsolidateXlsxFiles()
    Dim fd As FileDialog
    Dim selectedPath As String, targetPath As String, fileName As String
    Dim mainWb As Workbook, sourceWb As Workbook
    Dim mainWs As Worksheet, sourceWs As Worksheet
    Dim lastRow As Long, nextRow As Long
    Dim isFirstFile As Boolean
    Dim fileCount As Integer ' 1. 파일 처리 개수 확인용 변수 추가
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False ' 저장 오류 확인을 위해 잠시 주석 처리하거나 주의 깊게 확인 필요
    
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    If fd.Show = -1 Then
        selectedPath = fd.SelectedItems(1) & "\"
    Else
        MsgBox "폴더가 선택되지 않았습니다. 종료합니다."
        Exit Sub
    End If
    
    Set mainWb = Workbooks.Add
    Set mainWs = mainWb.Sheets(1)
    isFirstFile = True
    fileCount = 0
    
    fileName = Dir(selectedPath & "*.xlsx")
    
    ' 2. 루프 내에서 파일 처리 여부 카운트
    Do While fileName <> ""
        ' 자기 자신(결과 파일)이 이미 열려 있을 경우 제외
        If fileName <> "2025년 상반기 매출기록.xlsx" Then
            Set sourceWb = Workbooks.Open(selectedPath & fileName, ReadOnly:=True)
            Set sourceWs = sourceWb.Sheets(1)
            lastRow = sourceWs.Cells(sourceWs.Rows.Count, "A").End(xlUp).Row
            
            If lastRow > 1 Then
                If isFirstFile Then
                    sourceWs.UsedRange.Copy mainWs.Range("A1")
                    isFirstFile = False
                Else
                    nextRow = mainWs.Cells(mainWs.Rows.Count, "A").End(xlUp).Row + 1
                    sourceWs.Range("A2", sourceWs.Cells(lastRow, sourceWs.UsedRange.Columns.Count)).Copy _
                        mainWs.Range("A" & nextRow)
                End If
                fileCount = fileCount + 1 ' 처리된 파일 수 증가
            End If
            sourceWb.Close SaveChanges:=False
        End If
        fileName = Dir
    Loop
    
    ' 3. 처리된 파일이 하나도 없을 경우 종료
    If fileCount = 0 Then
        mainWb.Close SaveChanges:=False
        Application.ScreenUpdating = True
        MsgBox "선택한 폴더에 처리 가능한 .xlsx 파일이 없습니다."
        Exit Sub
    End If
    
    ' 4. 정렬 및 서식 작업
    With mainWs.Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=mainWs.Range("A1"), Order:=xlAscending
        .SetRange mainWs.UsedRange
        .Header = xlYes
        .Apply
    End With
    
    mainWs.UsedRange.Columns.AutoFit
    mainWs.Range(mainWs.Cells(1, 1), mainWs.Cells(1, mainWs.UsedRange.Columns.Count)).Interior.Color = RGB(135, 206, 235)
    
    ' 5. 결과 폴더 확인 및 파일 저장 (저장 형식 xlOpenXMLWorkbook(51) 명시)
    targetPath = selectedPath & "결과\"
    If Dir(targetPath, vbDirectory) = "" Then MkDir targetPath
    
    ' 6. 전체 경로 및 저장 시도 (오류 발생 시 확인 가능하도록 수정)
    On Error Resume Next
    mainWb.SaveAs fileName:=targetPath & "2025년 상반기 매출기록.xlsx", FileFormat:=51
    If Err.Number <> 0 Then
        MsgBox "파일 저장 중 오류 발생: " & Err.Description
    Else
        MsgBox fileCount & "개의 파일을 취합하여 저장을 완료했습니다." & vbCrLf & "경로: " & targetPath
    End If
    On Error GoTo 0
    
    mainWb.Close
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub