엑셀(Excel) 워크시트에는 다양한 종류의 정보를 저장하게 됩니다. 예를 들어 중요한 거래처나 담당자의 이메일 주소가 저장되어 있는 경우도 있습니다. 업무 중 이메일을 보내야 할 때 보통 아웃룩(Outlook)이나 지메일(Gmail)을 통해 직접 보내는 것이 일반적이지만, 셀에 입력된 내용을 기준으로 이메일을 보내야 한다면 마이크로소프트 엑셀을 활용하면 매우 효과적입니다. 이번 글에서는 엑셀의 셀 내용에 따라 이메일을 자동으로 발송할 수 있는 2가지 실용적인 방법을 그림과 함께 자세히 알아보겠습니다.
셀 내용을 기반으로 엑셀에서 이메일을 자동 발송하는 2가지 방법
먼저 예시 상황을 가정해 보겠습니다. 아르마니 그룹(Armani Group)의 여러 영업 담당자 정보가 담긴 대형 엑셀 워크시트가 있다고 합시다. B열에는 영업 담당자 이름, C열에는 사원 번호, D열에는 제품 종류, E열에는 각 담당자의 매출액이 입력되어 있습니다. 이 데이터를 바탕으로 MS 워드(MS Word)의 메일 병합(Mail Merge) 기능과 VBA 매크로를 활용해 엑셀에서 이메일을 발송하는 방법을 살펴보겠습니다. 아래는 오늘 실습에 사용할 데이터 세트의 전체 모습입니다.

방법 1. VBA 코드로 셀 내용 기준 이메일 자동 발송하기
첫 번째 방법은 간단한 VBA 코드를 사용해 엑셀에서 셀 내용에 따라 이메일을 자동으로 발송하는 것입니다. 특정 조건이 충족될 때 즉시 알림 메일을 보내야 하는 상황에서 특히 유용합니다. 여기서는 D6 셀의 값이 400보다 클 경우 이메일이 자동으로 생성되도록 코드를 작성해 보겠습니다. 아래 지침을 순서대로 따라 해 보세요.
1단계:
- 가장 먼저 모듈(Module)을 열어야 합니다. 리본 메뉴의 개발 도구(Developer) 탭에서 다음으로 이동하세요.
개발 도구 → Visual Basic

- Visual Basic 버튼을 클릭하면 Microsoft Visual Basic for Applications 창이 즉시 열립니다. 이 창에서 VBA 코드를 적용할 모듈을 삽입합니다. 다음 경로로 이동하세요.
삽입(Insert) → 모듈(Module)

2단계:
- 새 모듈 창이 나타나면 아래의 VBA 코드를 그대로 입력합니다.
Dim R As Range
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set R = Intersect(Range("D6"), Target)
If R Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 400 Then
Call send_mail_outlook
End If
End Sub
Sub send_mail_outlook()
Dim x As Object
Dim y As Object
Dim z As String
Set x = CreateObject("Outlook.Application")
Set y = x.CreateItem(0)
z = "Hello!" & vbNewLine & vbNewLine & _
"Hope you are well" & vbNewLine & _
"Visit our Exceldemy site"
On Error Resume Next
With y
.To = "Address"
.cc = ""
.BCC = ""
.Subject = "send mail based on cell value"
.Body = z
.Display
End With
On Error GoTo 0
Set y = Nothing
Set x = Nothing
End Sub

- 코드 입력 후 VBA 매크로를 실행합니다. 상단 메뉴에서 다음을 선택하세요.
실행(Run) → Sub/UserForm 실행

- VBA 코드가 실행된 이후부터는 D6 셀의 값이 400을 초과할 때마다 지정된 수신자에게 보낼 이메일이 아웃룩에 자동으로 작성됩니다. 사용자는 아래 스크린샷과 같이 보내기(Send) 버튼만 클릭하면 됩니다.

방법 2. 워드의 메일 병합 기능으로 셀 내용 기준 이메일 일괄 발송하기
두 번째 방법은 MS 워드의 메일 병합(Mail Merge) 기능을 활용해 엑셀 스프레드시트에 저장된 데이터로 여러 건의 이메일을 한 번에 발송하는 것입니다. 아래 절차를 차례대로 따라 해 보세요.
1단계:
- 워드 문서를 연 뒤 발송할 메시지 본문을 작성합니다.

- 이제 메일ings(메일 만들기) 탭에서 다음 경로로 이동합니다.
메일ings ➤ 받는 사람 선택 ➤ 기존 목록 사용

- 데이터 원본 선택(Select Data Source) 대화 상자가 나타나면 이메일 주소가 저장되어 있는 엑셀 파일을 선택하고 열기(Open)를 누릅니다.

- 이어서 표 선택(Select Table) 대화 상자가 표시되면 원하는 시트를 선택하고 확인(OK)을 클릭합니다.

2단계:
- 수신자별로 바뀌어야 할 단어를 선택합니다. 이 예시에서는 'Carl'이라는 이름을 선택합니다. 메일ings 탭에서 다음으로 이동하세요.
메일ings → 쓰기 및 필드 삽입 → 병합 필드 삽입 → Sales_Rep

- 그러면 아래 화면과 같이 해당 위치에 병합 필드가 삽입됩니다.

- 수신자 입장에서 메일이 어떻게 보이는지 미리 확인하고 싶다면 결과 미리 보기(Preview Results)를 클릭하세요.

- 모든 준비가 끝났으면 메일ings 탭에서 다음 경로로 이동합니다.
메일ings → 마침 → 마침 및 병합 → 전자 메일 메시지 보내기

- 전자 메일로 병합(Merge to E-mail) 대화 상자가 나타나면 받는 사람(To) 필드에서 Sales_Rep 헤더를 선택하고, 필요에 따라 제목 줄(Subject line)(예: Greetings)을 입력합니다. 마지막으로 확인(OK)을 누르면 모든 수신자에게 메일이 일괄 발송됩니다.

참고 사항
👉 Alt + F11 키를 동시에 누르면 Microsoft Visual Basic for Applications 창을 빠르게 열 수 있습니다.
👉 리본 메뉴에 개발 도구(Developer) 탭이 보이지 않는다면 직접 활성화할 수 있습니다. 다음 경로로 이동하세요.
파일(File) → 옵션(Option) → 리본 사용자 지정(Customize Ribbon)
마무리
지금까지 VBA 코드와 메일 병합 기능을 활용해 엑셀에서 셀 내용을 기준으로 이메일을 자동 발송하는 두 가지 방법을 알아보았습니다. 위에서 소개한 방법들을 여러분의 엑셀 업무에 적용하면 반복 작업을 크게 줄이고 생산성을 높일 수 있기를 바랍니다. 궁금한 점이나 추가 문의 사항이 있다면 언제든지 댓글로 남겨주세요.
함께 읽으면 좋은 글
- 조건 충족 시 엑셀에서 이메일 자동 발송하기(3가지 쉬운 방법)
- 매크로로 엑셀에서 본문 포함 이메일 보내기(초간단 가이드)
- 엑셀 매크로: 셀에 있는 주소로 이메일 보내기(2가지 방법)
- 날짜를 기준으로 엑셀에서 이메일 자동 발송하는 방법
- 엑셀에서 본문과 함께 이메일을 보내는 매크로(3가지 활용 사례)
- 엑셀 목록으로 이메일 보내기(2가지 효과적인 방법)