안녕하세요.
오늘은 엑셀관련된 업무를 하다가 답답함에 얼른 해보려고 서치 하다가 들어간 블로그에서 열심히 파일을 다운로드하였으나 열심히 낚여서 결론은 파일이 정상 작동을 하지 않더군요.
근데 댓글과 대댓글을 보니 무슨 상담사 연결하라고...
Chat GPT가 이렇게 널부러진 AI시대에 그런 걸로 장난질이라니...
화가 났습니다.
하지만 뭐 그분도 그분만의 삶이 있으니 그건 또 뭐라고 할게 아닌 거 같고...
그래서 준비했습니다.
여러가지 엑셀 파일을 합칠 건데...
한 시트에 제목열이 같다는 가정하에 유용하게 사용하 실 수 있을 것 같습니다.
제가 만든 건
1. 여러 가지 파일을 한 시트에 합친다.
2. 다만 첫 번째 파일은 제목열을 두고 두 번째 파일부터는 제목열을 없애고 합친다.
이렇게 두 가지에만 집중했습니다.
저는 경로가 맥에서 한 거라서 조금 다를 수 있는데 크게 다를 건 하나도 없는 것 같습니다.
제가 만들고 제가 써보지만 너무 뿌듯합니다.
순서는 파일을 오픈합니다.
그럼 빈화면이 보이고요.
여기서 ALT-F11 (단축키예요^^) 눌러 줍니다.
그럼 화면이 바뀝니다,.
여기서 바꿔주셔야 할 부분은 '고정된 폴더 경로 설정' 부분입니다.
저는 맥을 이용하다 보니 저렇게 나오는데요. 다들 본인 컴퓨터에서 경로확인 방법은 알고 계시죠?? 거기서 복사해서 붙이시면 됩니다.
다만 "따옴표"가 있어야겠죠??ㅎㅎ
그러면 이제 실행을 눌러줍니다.
저 같은 경우는 액세스 허가가 필요하다고 나와서 꺼버려서 디버깅 팝업이 나왔지만 저기서 허가 허가를 계속 누르면 파일이 합쳐집니다
제목열은 한 번만 있으니까 테스트하시고 싶으시면 두 개나 세 개 정도의 파일로 먼저 해보시길 권하여 봅니다.
혹시 코드만 알고 싶으신 분들도 있고 바이러스에 대한 의심이 있으신 분들도 있으실 것 같아서 코드는 파일 아래에 복사해 두었습니다.
<코드내용>
Sub MergeExcelFiles() Dim FolderPath As String Dim FileName As String Dim wbSource As Workbook Dim wsSource As Worksheet Dim wbTarget As Workbook Dim wsTarget As Worksheet Dim LastRow As Long Dim PasteRow As Long Dim IsHeaderCopied As Boolean ' 제목열 복사 여부 확인 변수 ' 고정된 폴더 경로 설정 FolderPath = "/Users/kec/Downloads/" ' 폴더 경로 유효성 확인 If Dir(FolderPath, vbDirectory) = "" Then MsgBox "지정된 폴더 경로가 존재하지 않습니다: " & FolderPath Exit Sub End If ' Target Workbook 생성 Set wbTarget = Workbooks.Add Set wsTarget = wbTarget.Sheets(1) PasteRow = 1 ' 데이터를 붙여넣기 시작할 행 IsHeaderCopied = False ' 제목열 복사 여부 초기화 ' 폴더에서 파일 탐색 FileName = Dir(FolderPath & "*.xls*") ' .xlsx와 .xls 모두 포함 Do While FileName <> "" ' 각 파일 열기 Set wbSource = Workbooks.Open(FolderPath & FileName) ' 모든 워크시트 반복 For Each wsSource In wbSource.Sheets ' 소스 워크시트의 마지막 행 확인 LastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row ' 제목열 복사 여부 확인 If Not IsHeaderCopied Then ' 제목열 포함 복사 wsSource.Rows("1:" & LastRow).Copy wsTarget.Cells(PasteRow, 1) IsHeaderCopied = True ' 제목열 복사 완료 표시 Else ' 제목열 제외하고 복사 (2번째 행부터) wsSource.Rows("2:" & LastRow).Copy wsTarget.Cells(PasteRow, 1) End If ' 붙여넣은 행 업데이트 PasteRow = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row + 1 Next wsSource ' 소스 워크북 닫기 wbSource.Close SaveChanges:=False ' 다음 파일로 이동 FileName = Dir Loop MsgBox "모든 파일이 성공적으로 병합되었습니다!", vbInformation End Sub |
그럼 즐겁고 편한 엑셀 라이프 되시길요!!!
게으른 자가 일을 편하게 합니다!!! 퐈이야!!
'생각정리' 카테고리의 다른 글
신혼부부와 청년만(?) 주택청약 관련 리뷰 (0) | 2024.09.02 |
---|