본문 바로가기

카테고리 없음

엑셀에서 버튼 클릭 시 PDF 파일을 메일로 자동 전송하는 방법 (VBA + Outlook 활용)

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

반응형


엑셀에서 버튼을 누르면
📎 현재 시트를 PDF로 저장하고
📧 자동으로 메일 작성 + 첨부 + 전송까지 된다면
반복 업무가 정말 편해지겠죠?

오늘은 엑셀 → PDF 자동 저장 → Outlook으로 메일 자동 작성 및 첨부 전송까지 한 번에 처리하는 끝판왕 자동화 방법을 알려드릴게요.



✅ 1. VBA 코드: 시트를 PDF로 저장하고 메일로 전송

Sub ExportPDFAndSendEmail()
    Dim ws As Worksheet
    Dim filePath As String
    Dim outlookApp As Object
    Dim outlookMail As Object

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

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

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

    ' Outlook 열기
    Set outlookApp = CreateObject("Outlook.Application")
    Set outlookMail = outlookApp.CreateItem(0)

    ' 메일 작성
    With outlookMail
        .To = "받는사람@example.com"
        .CC = "참조@example.com"
        .Subject = "업무보고 - " & Format(Date, "yyyy-mm-dd")
        .Body = "안녕하세요," & vbCrLf & vbCrLf & "오늘의 업무보고서 PDF 파일을 첨부드립니다." & vbCrLf & vbCrLf & "감사합니다."
        .Attachments.Add filePath
        .Display ' 또는 .Send 사용하면 자동 전송됨
    End With

    MsgBox "메일 작성 완료. Outlook에서 확인하세요.", vbInformation
End Sub




✅ 2. 기능 설명

항목 설명
.ExportAsFixedFormat 현재 시트를 PDF로 저장
CreateObject("Outlook.Application") Outlook 자동 실행
.To, .CC, .Subject, .Body 자동 메일 내용 구성
.Attachments.Add PDF 파일 자동 첨부
.Display 메일 작성창 열기 (수동 확인)
.Send 수동 확인 없이 자동 발송 (주의 필요)




✅ 3. 버튼 연결 방법
1. [개발 도구] → [삽입] → 양식 컨트롤 버튼
2. 버튼 생성 후 ExportPDFAndSendEmail 매크로 연결
3. 버튼 텍스트: “PDF 메일 전송” 또는 “보고서 발송” 등 변경



✅ 4. 주의사항
• 반드시 Microsoft Outlook이 설치되어 있어야 합니다 (웹메일 불가)
• Outlook이 실행 중이지 않아도 VBA가 자동 실행시켜줍니다
• .Send로 자동 전송할 경우, 회사 보안정책이나 사용자 설정에 따라 차단될 수 있음
• 자동 전송이 부담된다면 .Display로 먼저 메일 확인 후 수동 전송 추천



✅ 5. 응용 예: 여러 시트를 PDF로 저장해 첨부하거나, 파일명에 시간 포함하기

filePath = ThisWorkbook.Path & "\" & ws.Name & "_" & Format(Now, "yyyymmdd_hhmmss") & ".pdf"




요약 정리

단계 기능 코드
1단계 PDF 저장 ws.ExportAsFixedFormat
2단계 Outlook 실행 CreateObject("Outlook.Application")
3단계 메일 작성 .To, .Subject, .Body
4단계 첨부 .Attachments.Add filePath
5단계 전송 .Display 또는 .Send




이 기능은
📩 자동 보고 메일 전송,
📑 프로젝트 결과물 공유,
🧾 매일/매주 반복 보고 자동화
같은 업무에 매우 적합합니다.

다음 글에서는 **“엑셀에서 버튼 클릭 시 특정 파일을 열고, 자동으로 일부 데이터만 복사해 가져오는 방법”**을 소개해드릴게요. 예: 외부 매출자료.xlsx 파일에서 A1:F10 영역만 복사해 현재 시트로 붙여넣기!


반응형