강의소개

이번 강의에서는 엑셀 메일 보내기 자동화 매크로를 작성해보겠습니다. 엑셀과 아웃룩을 연동하여 메일 보내기 자동화 프로그램을 만들면, VBA에서 기본으로 제공하는 아웃룩 라이브러리를 통해 첨부파일, 예약발송 등의 다양한 부가기능을 활용할 수 있습니다.

이전 강의에서 알아본 PDF 추출 매크로페이지 레이아웃 설정 모듈도 같이 사용하니, 이전 강의를 못보고 오신 분은 관련 링크를 참고해주세요.

좀 더 자동화 된 Send_Email 명령문이 필요하신가요? 추가 설정없이 바로 사용가능한 Send_Email 메일 보내기 명령문 전체 마스터 코드는 여기에서 확인하실 수 있습니다.

패치노트

2019년 12월 5일 :
Send_Email 명령문에 예약발송기능 및 '그림으로 첨부'하는 코드를 추가하였습니다.

예제파일 및 E-Book 교재 다운로드

파일구분마지막수정일파일형식파일다운로드
9완성파일2020-01-06XLSM퀵 VBA 파일다운로드
8추가기능2019-12-16XLAM퀵 VBA 파일다운로드
8완성파일2019-12-16ZIP퀵 VBA 파일다운로드
7E-Book2019-11-24PDF퀵 VBA 파일다운로드
7예제파일2019-11-22XLSX퀵 VBA 파일다운로드
6E-Book2019-11-26PDF퀵 VBA 파일다운로드
6예제파일2019-10-26XLSX퀵 VBA 파일다운로드
5E-Book2019-12-15PDF퀵 VBA 파일다운로드
5예제파일2019-12-15XLSX퀵 VBA 파일다운로드
4E-Book2019-10-30PDF퀵 VBA 파일다운로드
4완성파일2019-10-30ZIP퀵 VBA 파일다운로드
3E-Book2019-10-30PDF퀵 VBA 파일다운로드
3예제파일2019-10-30XLSX퀵 VBA 파일다운로드
2완성파일2019-12-22XLSM퀵 VBA 파일다운로드
1완성파일2019-11-27XLSM퀵 VBA 파일다운로드

1. 메일 보내기 명령문 보조 모듈 추가

이전 강의에서 제작한 PDF 변환 명령문 및 그 외 보조 모듈을 추가합니다. 각 명령문에 대한 자세한 설명은 이전 강의 PDF 변환 매크로 만들기 (퀵 VBA 6강) 강의를 참고하세요.

A. 파일명 설정 및 파일 저장을 위한 보조 명령문

각 명령문에 대한 자세한 설명은 관련 포스트를 참고하세요.

B. 페이지 레이아웃 설정을 위한 보조 모듈 (Page_Setup)

C. 선택범위 PDF 저장 모듈 (Rng_To_PDF)

2. 메일 보내기 본 명령문 작성 (Send_Email 명령문)

이번 강의에서는 엑셀을 아웃룩을 연동하여 이메일을 보내는 방법을 알아봅니다. 새로운 모듈을 추가한 뒤, 모듈의 이름을 "Email_Module"로 변경합니다.

A. Outlook 라이브러리 추가

VBA 편집창 상단 '도구' – '참조' 에서 Outlook 라이브러리(Microsoft Outlook 16.0 Object Library) 를 추가합니다.

아웃룩 라이브러리 추가

아웃룩을 참조하기 위해 Outlook 라이브러리를 추가합니다

B. 명령문 인수 작성

명령문에 들어갈 인수를 작성합니다. Send_Email 명령문에는 총 8개의 인수가 들어갑니다.

인수명데이터구분설명기본값
MailToString받는 사람의 메일 주소입니다.
SubjectString메일 제목입니다.
HTMLStringStringHTML 형식의 메일 본문입니다.
PasteSelectionBoolean[선택인수] 선택 범위를 메일 본문에 붙여넣기 할지 여부입니다.
CCToString[선택인수] 참조 메일 주소입니다.""
BCCToString[선택인수] 숨은참조 메일 주소입니다.""
AttachFilePathString첨부파일의 파일 경로입니다.""
PathDelimiterString여러 개의 첨부파일이 있을 시, 파일 경로를 구분할 구분자입니다."|"
C. 명령문 변수 작성 및 설정

명령문에 들어갈 변수를 작성한 뒤 각 변수를 설정합니다.

  • 변수 중 wdPasteDefault 는 워드에디터에서 복사한 값을 붙여넣기 할 방식을 결정하는 WdRecoveryType 의 한 항목이며, 원칙적으로 wdRecoveryType 항목은 Word Object Library를 참고하여 지정하는 것이 맞습니다.
  • 하지만 아웃룩에서 사용하는 워드에디터는 기본 워드 프로그램으로 참조하는 Library와 별개로 작성되므로, Word Object Library를 사용할 수 없습니다. 따라서 Variant(임의값) 으로 변수를 지정하여 명령문을 작성해주세요.

변수명데이터구분설명
AppOutlookOutlook.Application실행할 아웃룩 프로그램입니다.
newEmailOutlook.MailItem아웃룩에서 작성할 메일입니다.
pageInspectorOutlook.Inspector아웃룩 워드에디터를 불러오기 위한 Inspector 항목입니다.
pageEditorObject아웃룩에서 메일을 편집할 워드 에디터입니다.
varFilePathVariantString 형태로 받아온 첨부파일 주소를 배열형태로 변환합니다.
FileCountLong첨부파일의 개수입니다.
iLongFor 반복문의 연번입니다.
wdPasteDefaultVariant엑셀에서 선택한 범위를 메일에 붙여넣기 할 방식입니다.

D. 메일항목 설정 #1

보낼 메일의 각 항목을 설정합니다. 설정에 사용되는 모든 항목은 명령문의 인수/변수에서 받아왔으므로, 각 항목을 호출해주면 됩니다.

  • To : 받는 사람의 메일 주소입니다.
  • CC : 참조 메일 주소입니다.
  • BCC : 숨은 참조 메일 주소입니다.
  • Subject : 메일 제목입니다.
  • Attachments.Add : 첨부파일을 추가합니다.
  • HTMLBody : HTML 형식의 메일 본문을 작성합니다.
  • DefferedDeliveryTime : 예약발송 또는 지연발송을 위한 시간을 설정합니다.
    – DateSerial 함수 – 연/월/일로 입력한 날짜에 해당하는 일련번호를 반환합니다.
    – TimeSerial 함수 – 시간/분/초로 입력한 시간에 해당하는 일련번호를 반환합니다.
    – DateAdd 함수 – 지정한 시간/날짜로부터 선택한 '단위' 만큼 지연된 값을 반환합니다.

예약발송 설정 예제

  • 예제1) 2019년 12월 25일 오후 9시에 발송 : DateSerial(2019, 12, 25) + TimeSerial(9,0,0)
  • 예제2) 현재시간으로부터 30분 뒤에 발송 : DateAdd("n", 30, Now)

E. 메일항목 설정 #2

엑셀 시트에서 선택한 범위를 메일 본문에 붙여넣기 할 경우, 아웃룩 워드에디터에서 추가 설정이 필요합니다. 본 강의에서는 엑셀의 선택한 범위를 메일 본문 마지막 부분에 기본 표 형식으로 붙여넣기 하는 방법을 알아봅니다.

  • pageEditor.Application.Selection.Start : 엑셀에서 복사한 범위를 붙여넣기 할 시작지점입니다.
  • pageEditor.Application.Selection.PasteAndFormat : 붙여넣기 할 방식입니다. 본 강의에서는 붙여넣기 기본값을 사용하였습니다.
  • 워드에디터 붙여넣기 형식 전체목록 보러가기 :
    https://docs.microsoft.com/en-us/office/vba/api/word.wdrecoverytype

F. 메일 보내기 및 변수 초기화

Send 함수를 통해 메일을 발송합니다. 여러 개의 메일을 발송할 경우, 할당된 변수를 초기화하여 매크로 동작속도를 더욱 빠르게 합니다. 변수 초기화는 마지막으로 할당된 변수부터 역순으로 하는 것에 주의하세요.

G. Send_Email 전체 명령문

더 개선된 Send_Email 전체 마스터 코드 및 실전 예제파일은 여기에서 확인하실 수 있습니다.

3. 이메일 보내기 명령문 테스트

작성한 메일 보내기 명령문을 테스트하기 위한 명령문을 작성합니다. 아래 명령문을 복사/붙여넣기 한 뒤 명령문을 실행해주세요. 테스트 명령문은 아래 동작을 수행합니다.

  1. 직원명_부서명_년도-월 의 파일명으로 PDF 파일을 바탕화면에 저장
  2. 저장된 PDF 파일을 메일에 첨부 (파일경로를 세로바(|)로 구분, 2개 동시첨부 가능)
  3. HTML 형식으로 작성된 메일 본문 및 급여명세서의 B2:E18 범위를 메일 본문에 붙여넣기
    엑셀 범위를 HTML 형식으로 바꾸는 방법은 관련 포스트에서 자세히 설명드렸습니다.
  4. [email protected] 로 메일 발송

테스트 명령문에서 받는 사람 및 메일 본문, PDF변환 범위 등은 필요에 따라 변경 후 사용 가능합니다.

4. 시트에 매크로 실행 버튼 추가

작성한 매크로를 쉽게 실행하기 위한 버튼을 시트위에 추가합니다. 시트에 도형을 생성한 뒤, 원하는 문구/아이콘을 추가합니다. 생성한 도형을 우클릭한 뒤 매크로지정을 선택합니다.

메일 보내기 매크로지정

도형을 우클릭 한 뒤, [매크로지정]을 선택합니다.

매크로 지정을 선택하면 새로운 팝업창이 나타납니다. 팝업창에서 방금 추가 한 'Test' 명령문을 선택합니다.

메일 보내기 테스트 명령문

팝업창에서 Test 명령문을 선택한 뒤, 확인을 눌러 마무리합니다.

이후 도형을 클릭하면 메일 보내기 명령문이 실행됩니다.

메일 보내기 매크로 GIF_

추가한 도형을 클릭하면 메일이 아웃룩으로 자동 발송됩니다.

댓글 남기기

avatar
  현재 페이지 댓글알림 신청  
알림 설정