본문 바로가기
업무 자동화

엑셀 VBA: 폴더 내 엑셀 파일을 PDF로 한 번에 변환하기

by jungdabnote 2026. 1. 23.
반응형

회사에서 이런 말 한 번쯤은 다 들어보셨을 겁니다.

 

"아까 만든 견적서들 있잖아. 그거 전부 PDF로 바꿔서 보내줘.”

이 말 듣는 순간,
머릿속에 바로 떠오르는 장면이 있죠.

엑셀 파일 하나 열고 →
다른 이름으로 저장 →
파일 형식 PDF로 변경 →
저장 → 닫기

이걸 파일 개수만큼 반복…
솔직히 생각만 해도 피곤합니다.

그래서 정리해 둔 게
엑셀 파일을 PDF로 한 번에 변환해 주는 VBA 매크로입니다.
버튼 한 번 누르고 파일만 선택하면,
엑셀 파일들이 알아서 PDF로 쭉 변환됩니다.


왜 엑셀을 PDF로 변환해야 할까

엑셀 파일을 그대로 보내면 은근히 문제가 생깁니다.

  • 상대방이 실수로 수식을 건드리거나
  • 셀 너비가 깨지거나
  • 버전에 따라 화면이 다르게 보이거나

그래서 외부로 나가는 문서는
웬만하면 PDF로 변환해서 보내는 게 안전합니다.

문제는 개수가 많을 때죠.
이럴 때 매크로 한 번 써두면 정말 편합니다.


엑셀 파일을 PDF로 변환하는 VBA 매크로

아래 매크로는 이런 방식으로 동작합니다.

  • PDF로 바꿀 엑셀 파일을 여러 개 선택
  • 파일을 하나씩 열어서
  • 활성 시트를 기준으로 PDF 변환
  • 원본 엑셀 파일과 같은 폴더에 저장

원본 파일은 건드리지 않고,
PDF만 깔끔하게 만들어 줍니다.


VBA 매크로 사용 방법

  1. 엑셀에서 Alt + F11 눌러 VBA 편집기 실행
  2. 상단 메뉴에서 [삽입] → [모듈] 클릭
  3. 아래 코드를 그대로 복사해서 붙여넣기
  4. 엑셀로 돌아와 Alt + F8 → ConvertExcelToPDF 실행

엑셀 → PDF 변환 VBA 전체 코드

 
Sub ConvertExcelToPDF()

    Dim FilesSelected As FileDialog
    Dim FilePath As String
    Dim WorkBk As Workbook
    Dim i As Integer
    Dim SaveName As String

    ' 화면 깜빡임 및 경고창 끄기
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Set FilesSelected = Application.FileDialog(msoFileDialogFilePicker)

    With FilesSelected
        .Title = "PDF로 변환할 엑셀 파일들을 선택하세요"
        .AllowMultiSelect = True
        .Filters.Clear
        .Filters.Add "Excel Files", "*.xls; *.xlsx; *.xlsm"

        If .Show = -1 Then

            For i = 1 To .SelectedItems.Count

                FilePath = .SelectedItems(i)
                Set WorkBk = Workbooks.Open(FilePath)

                ' PDF 파일명 설정
                SaveName = Left(FilePath, InStrRev(FilePath, ".") - 1) & ".pdf"

                ' PDF 변환 (활성 시트 기준)
                WorkBk.ActiveSheet.ExportAsFixedFormat _
                    Type:=xlTypePDF, _
                    Filename:=SaveName, _
                    Quality:=xlQualityStandard, _
                    IncludeDocProperties:=True, _
                    IgnorePrintAreas:=False, _
                    OpenAfterPublish:=False

                WorkBk.Close SaveChanges:=False

            Next i

            MsgBox "엑셀 파일이 모두 PDF로 변환되었습니다.", vbInformation, "작업 완료"

        Else
            MsgBox "파일이 선택되지 않았습니다.", vbExclamation
        End If
    End With

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub

사용하면서 알면 좋은 팁

직접 써보면서 느낀 점 몇 가지입니다.

  • 이 매크로는 인쇄 영역(Print Area) 기준으로 PDF를 만듭니다
    → 인쇄 영역이 없으면 데이터 전체가 PDF로 저장됩니다
  • PDF 모양이 이상하면
    실행 전에 인쇄 미리보기 한 번 확인하는 게 좋습니다
  • 파일 선택 창에서는
    Ctrl / Shift 키로 여러 파일을 한 번에 선택할 수 있습니다

견적서나 보고서처럼
양식이 이미 잡혀 있는 파일에 특히 잘 맞습니다.


마무리

이걸로

  • 엑셀 파일 합치기
  • 엑셀 파일 시트별로 나누기
  • 엑셀 파일 PDF로 변환하기

까지,
직장인 엑셀 자동화에서 제일 자주 쓰는 작업 3종 세트가 전부 모였습니다.

이 세 가지만 잘 써도
엑셀로 하는 단순 반복 작업은 확실히 줄어듭니다.

엑셀 파일 PDF로 바꾸느라
하나씩 열고 저장하고 계셨다면,
매크로 한 번 써보셔도 괜찮을 것 같습니다.

 

다음에도
실무에서 바로 써먹을 수 있는 엑셀 자동화 팁 정리해 보겠습니다.
궁금한 점 있으면 편하게 댓글 남겨 주세요!

반응형