반응형
회사에서 이런 말 한 번쯤은 다 들어보셨을 겁니다.
"아까 만든 견적서들 있잖아. 그거 전부 PDF로 바꿔서 보내줘.”
이 말 듣는 순간,
머릿속에 바로 떠오르는 장면이 있죠.
엑셀 파일 하나 열고 →
다른 이름으로 저장 →
파일 형식 PDF로 변경 →
저장 → 닫기
이걸 파일 개수만큼 반복…
솔직히 생각만 해도 피곤합니다.
그래서 정리해 둔 게
엑셀 파일을 PDF로 한 번에 변환해 주는 VBA 매크로입니다.
버튼 한 번 누르고 파일만 선택하면,
엑셀 파일들이 알아서 PDF로 쭉 변환됩니다.
왜 엑셀을 PDF로 변환해야 할까
엑셀 파일을 그대로 보내면 은근히 문제가 생깁니다.
- 상대방이 실수로 수식을 건드리거나
- 셀 너비가 깨지거나
- 버전에 따라 화면이 다르게 보이거나
그래서 외부로 나가는 문서는
웬만하면 PDF로 변환해서 보내는 게 안전합니다.
문제는 개수가 많을 때죠.
이럴 때 매크로 한 번 써두면 정말 편합니다.
엑셀 파일을 PDF로 변환하는 VBA 매크로
아래 매크로는 이런 방식으로 동작합니다.
- PDF로 바꿀 엑셀 파일을 여러 개 선택
- 파일을 하나씩 열어서
- 활성 시트를 기준으로 PDF 변환
- 원본 엑셀 파일과 같은 폴더에 저장
원본 파일은 건드리지 않고,
PDF만 깔끔하게 만들어 줍니다.
VBA 매크로 사용 방법
- 엑셀에서 Alt + F11 눌러 VBA 편집기 실행
- 상단 메뉴에서 [삽입] → [모듈] 클릭
- 아래 코드를 그대로 복사해서 붙여넣기
- 엑셀로 돌아와 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
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로 바꾸느라
하나씩 열고 저장하고 계셨다면,
매크로 한 번 써보셔도 괜찮을 것 같습니다.
다음에도
실무에서 바로 써먹을 수 있는 엑셀 자동화 팁 정리해 보겠습니다.
궁금한 점 있으면 편하게 댓글 남겨 주세요!
반응형
'업무 자동화' 카테고리의 다른 글
| 엑셀 VBA: 작업 중인 파일 자동으로 백업하기 (날짜·시간 저장) (0) | 2026.01.26 |
|---|---|
| 엑셀 VBA: 아웃룩 연동해서 메일 한 번에 보내기 (0) | 2026.01.25 |
| 엑셀 VBA: 폴더 내 파일 이름 한 번에 바꾸기 (특정 글자 치환 매크로) (1) | 2026.01.24 |
| 엑셀 VBA: 시트별로 파일 따로 저장하기 (시트 나누기 매크로) (3) | 2026.01.22 |
| 엑셀 VBA로 여러 엑셀 파일 한 번에 합치기 (실무 매크로) (0) | 2026.01.21 |