
회사에서 반복적인 엑셀 작업, 힘드시죠?
여러 개의 엑셀 파일에 들어있는 특정 단어를 한 번에 찾아 바꿀 수 있다면 얼마나 편리할까요?
오늘은 "VBA(엑셀 매크로)"를 활용해 폴더 안의 모든 엑셀 파일을 자동으로 수정하는 방법을 소개합니다.
파일을 하나씩 열지 않고, 자동으로 처리하는 방법이 궁금하신 분들께 꼭 도움이 될 내용이에요.
❓ 왜 이 작업이 필요할까요?
예시 상황
✅ 고객사명이 바뀌었어요 → 모든 문서에서 "A회사" → "B회사"로
✅ 연도가 바뀌었어요 → "2023년" → "2024년"으로
✅ 담당자가 변경됐어요 → "김영희" → "박민수"로
✅ 링크가 변경됐어요 → 옛날 URL을 최신 URL로 업데이트하고 싶어요
수십 개 파일을 열어서 하나하나 바꾸는 건 비효율적이죠.
이럴 때는, 한 번의 클릭으로 끝내는 엑셀 VBA 자동화가 정답입니다!
💻 VBA 매크로 코드 소개
📁 폴더 안의 모든 엑셀 파일을 열고
📝 지정한 문자열을 찾아
🔁 새 문자열로 변경한 뒤
💾 저장하고 닫기까지 자동 수행됩니다.
사용할 매크로 코드는 아래와 같아요:
| Sub ReplaceCellContents() Dim folderPath As String Dim fileName As String Dim wb As Workbook Dim currentWb As Workbook Dim ws As Worksheet Dim i As Integer Dim oldValue As String Dim newValue As String Dim lastRow As Long Dim j As Integer Dim replaceCount As Long Dim totalReplaceCount As Long ' 현재 워크북 참조 Set currentWb = ThisWorkbook ' 폴더 선택 대화상자 With Application.FileDialog(msoFileDialogFolderPicker) .Title = "파일이 있는 폴더를 선택하세요" .Show If .SelectedItems.Count = 0 Then MsgBox "폴더가 선택되지 않았습니다." Exit Sub End If folderPath = .SelectedItems(1) End With ' 폴더 경로 끝에 백슬래시 추가 (없는 경우) If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\" End If ' A열과 B열에서 변경 정보 읽기 (현재 워크북의 활성 시트에서) With currentWb.ActiveSheet lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row If lastRow < 1 Then MsgBox "변경할 내용 목록이 없습니다." Exit Sub End If End With ' 화면 업데이트 및 경고 비활성화 Application.ScreenUpdating = False Application.DisplayAlerts = False totalReplaceCount = 0 ' 폴더 내의 모든 Excel 파일 처리 fileName = Dir(folderPath & "*.xls*") Do While fileName <> "" ' 현재 매크로가 실행되는 파일은 제외 If fileName <> currentWb.name Then On Error GoTo ErrorHandler ' 파일 열기 Set wb = Workbooks.Open(folderPath & fileName) ' 1번째 시트부터 모든 시트에 대해 처리 For i = 1 To wb.Worksheets.Count Set ws = wb.Worksheets(i) ' A열과 B열의 모든 행을 확인하여 내용 변경 For j = 2 To lastRow oldValue = Trim(CStr(currentWb.ActiveSheet.Cells(j, 1).Value)) newValue = Trim(CStr(currentWb.ActiveSheet.Cells(j, 2).Value)) ' 빈 값이 아닌 경우 찾아바꾸기 실행 If oldValue <> "" And newValue <> "" Then ' 현재 시트에서 찾아바꾸기 ws.Cells.Replace What:=oldValue, _ Replacement:=newValue, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ SearchFormat:=False, _ ReplaceFormat:=False End If Next j Next i ' 파일 저장 및 닫기 wb.Save wb.Close False End If ' 다음 파일로 fileName = Dir() Loop ' 화면 업데이트 및 경고 다시 활성화 Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "셀 내용 변경이 완료되었습니다." Exit Sub ErrorHandler: ' 오류 발생 시 처리 If Not wb Is Nothing Then wb.Close False End If Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "파일 처리 중 오류가 발생했습니다: " & fileName & vbCrLf & Err.Description Resume Next End Sub |
🛠 사용 방법
- A열에 찾을 내용, B열에 바꿀 내용을 작성
- 매크로 실행 (Alt + F8 > ReplaceCellContents 실행)
- 폴더 선택 > 자동 실행
✔ 매크로가 적용되지 않게 하고 싶은 파일은 다른 폴더로 옮겨주세요!
✔ 본인 매크로 파일은 자동으로 제외됩니다.
✅ 마무리 요약
- 폴더 내 엑셀 파일 일괄 수정 매크로
- "찾기 → 바꾸기"를 자동화
- 하이퍼링크 변경도 가능
- 업무 자동화, 시간 절약에 강력 추천!
📌 블로그 구독하고 더 많은 VBA 꿀팁 받아보세요!
이처럼 업무 자동화, 문서 최적화에 도움이 되는
엑셀 VBA 매크로 활용법을 계속해서 공유하고 있습니다.
블로그 이웃 추가 + 알림 설정 하셔서
유용한 실전 자동화 예제를 꾸준히 받아보세요! 😊