File

엑셀 VBA로 여러 파일, 전체 시트 셀 값 한 번에 '찾아바꾸기' 하는 방법

노만e 2025. 9. 15. 22:19

 

회사에서 반복적인 엑셀 작업, 힘드시죠?
여러 개의 엑셀 파일에 들어있는 특정 단어를 한 번에 찾아 바꿀 수 있다면 얼마나 편리할까요?

오늘은 "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

 

🛠 사용 방법

  1. A열에 찾을 내용, B열에 바꿀 내용을 작성
  2. 매크로 실행 (Alt + F8 > ReplaceCellContents 실행)
  3. 폴더 선택 > 자동 실행

✔ 매크로가 적용되지 않게 하고 싶은 파일은 다른 폴더로 옮겨주세요!
✔ 본인 매크로 파일은 자동으로 제외됩니다.

 

✅ 마무리 요약

  • 폴더 내 엑셀 파일 일괄 수정 매크로
  • "찾기 → 바꾸기"를 자동화
  • 하이퍼링크 변경도 가능
  • 업무 자동화, 시간 절약에 강력 추천!

📌 블로그 구독하고 더 많은 VBA 꿀팁 받아보세요!

이처럼 업무 자동화, 문서 최적화에 도움이 되는
엑셀 VBA 매크로 활용법을 계속해서 공유하고 있습니다.
블로그 이웃 추가 + 알림 설정 하셔서
유용한 실전 자동화 예제를 꾸준히 받아보세요! 😊

 

폴더내 모든 파일 및 시트의 셀값 변경.xlsm
0.02MB
시트내 셀 값 변경_파일리스트.zip
0.09MB