본문 바로가기

카테고리 없음

엑셀에서 버튼 클릭 시 전체 시트를 PDF로 자동 저장하는 방법 (VBA 활용)

by 공부하는 40대 2025. 7. 23.

반응형


엑셀에서 보고서나 양식을 작성한 후, 버튼만 클릭하면 자동으로 PDF 파일로 저장되는 기능이 있다면 정말 편리하겠죠? 특히 반복적으로 출력하거나, 메일 첨부용 보고서를 만드는 업무에서는 한 번의 클릭으로 PDF 자동 저장 기능이 실무 효율을 크게 높여줍니다.

오늘은 VBA를 사용해서 버튼 클릭 → 현재 시트를 PDF로 저장하는 방법을 완전 자동화로 알려드릴게요.



✅ 1. 기본 VBA 코드: 현재 시트를 PDF로 저장

Sub ExportSheetAsPDF()
    Dim ws As Worksheet
    Dim filePath As String

    Set ws = ThisWorkbook.Sheets("업무보고") ' 저장할 시트 이름 수정

    ' 저장 경로와 파일 이름 설정
    filePath = ThisWorkbook.Path & "\" & ws.Name & "_" & Format(Date, "yyyy-mm-dd") & ".pdf"

    ' PDF로 저장
    ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Quality:=xlQualityStandard

    MsgBox "PDF 저장 완료: " & filePath, vbInformation
End Sub




✅ 2. 코드 설명
• ThisWorkbook.Path → 현재 엑셀 파일이 저장된 폴더에 PDF 생성
• ws.Name → 시트 이름을 PDF 파일명에 포함
• Format(Date, "yyyy-mm-dd") → 오늘 날짜 자동 포함
• 저장 경로는 필요시 절대경로(예: "C:\Users\사용자\Documents\...")로 수정 가능



✅ 3. 버튼 만들기 및 매크로 연결
1. [개발 도구] → [삽입] → 양식 컨트롤 버튼 클릭
2. 시트 위에 버튼 생성
3. 매크로 지정 창에서 ExportSheetAsPDF 선택
4. 버튼 텍스트: “PDF로 저장”, “보고서 출력” 등 원하는 문구로 변경



✅ 4. 전체 통합문서(PDF로 모든 시트 저장) 기능도 가능

모든 시트를 한 번에 PDF로 저장하려면 아래 코드로 확장할 수 있어요:

Sub ExportWorkbookAsPDF()
    Dim filePath As String
    filePath = ThisWorkbook.Path & "\전체보고서_" & Format(Date, "yyyy-mm-dd") & ".pdf"

    ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath

    MsgBox "전체 시트를 PDF로 저장했습니다.", vbInformation
End Sub




✅ 5. 특정 범위만 PDF로 저장하고 싶다면?

ws.Range("A1:F30").ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath

• 특정 범위만 저장하는 방식도 가능하며, 출력 범위 설정된 보고서 양식에 적합합니다.



요약 정리

목적 코드 방식 결과
현재 시트 PDF 저장 .ExportAsFixedFormat 자동 파일 생성
파일명에 날짜 포함 Format(Date, "yyyy-mm-dd") 예: 업무보고_2025-07-22.pdf
전체 시트 저장 ThisWorkbook.ExportAsFixedFormat 통합 PDF 생성
범위만 저장 ws.Range(...).ExportAsFixedFormat 맞춤 출력 가능




이 기능은
📄 보고서 출력,
📄 결재용 문서 생성,
📄 메일 첨부 자동화,
📄 문서 백업 정리에 매우 유용합니다.

다음 글에서는 **“엑셀에서 버튼 클릭 시 메일로 자동 전송하는 방법(첨부 포함)”**을 소개해드릴게요. 예: 버튼 클릭 시 PDF로 저장된 파일을 자동으로 Outlook 메일에 첨부해 전송까지!

반응형