여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. Excel - 매크로 - 이메일 링크 생성

Excel – 매크로 – 이메일 링크 생성

2개월전 작성

Excel 매크로 메일 링크 만들기

Excel 매크로 메일 링크 는 스프레드시트에서 클릭 한 번으로 이메일을 보낼 수 있게 해주는 강력한 기능이다.

많은 사용자들이 고객 명단이나 연락처 목록을 엑셀로 관리하면서 이메일을 보내기 위해 복사-붙여넣기를 반복하는 번거로움을 겪고 있다.

VBA 코드를 활용하여 클릭 한 번으로 이메일 클라이언트를 실행하고, 수신자, 제목, 본문까지 자동으로 채워주는 메일 링크를 만드는 방법을 알아보자.

목차

기본 개념

Excel 매크로 메일 링크 는 기본적으로 mailto 프로토콜을 활용하여 이메일 클라이언트를 자동으로 실행시키는 기능이다.

mailto 프로토콜은 웹 브라우저나 응용 프로그램에서 이메일 클라이언트를 실행시키기 위한 URI 스킴으로, 다음과 같은 기본 형식을 가진다.

mailto:recipient@example.com?subject=메일제목&body=메일내용
사용된 코드 설명
mailto:recipient@example.com
:
이메일을 보낼 주소를 지정한다.
?subject=메일제목
:
이메일의 제목을 지정한다.
&body=메일내용
:
이메일의 본문 내용을 지정한다.

이러한 mailto 링크를 클릭하면 기본 이메일 프로그램(Outlook, Gmail 등)이 열리고, 지정된 값들이 자동으로 채워진다.

Excel 매크로 메일 링크 의 장점은 단순한 하이퍼링크보다 더 동적이고 강력한 기능을 제공한다는 점이다.
VBA(Visual Basic for Applications)를 사용하면 셀의 데이터를 실시간으로 가져와 이메일 정보를 구성할 수 있다.

구성 요소 설명 예시
수신자 이메일을 받을 사람의 주소 recipient@example.com
제목 이메일의 제목 견적 요청드립니다
본문 이메일의 내용 안녕하세요, 귀사 제품에 관심이 있어 연락드립니다.
첨부파일 일부 이메일 클라이언트에서 지원 (클라이언트마다 지원 여부 다름)

기본 매크로 코드

가장 기본적인 Excel 매크로 메일 링크 코드를 살펴보자. 이 코드는 선택한 셀의 이메일 주소를 가져와 메일 링크를 생성한다.

Sub CreateEmailLink()
Dim EmailAddress As String
Dim Subject As String
Dim Body As String
Dim HyperlinkText As String
EmailAddress = ActiveCell.Value
Subject = "안녕하세요, 문의드립니다"
Body = "안녕하세요," & vbCrLf & vbCrLf & "귀사 제품에 관심이 있어 연락드립니다." & vbCrLf & vbCrLf & "자세한 정보를 부탁드립니다." & vbCrLf & vbCrLf & "감사합니다."
Subject = WorksheetFunction.EncodeURL(Subject)
Body = WorksheetFunction.EncodeURL(Body)
HyperlinkText = "mailto:" & EmailAddress & "?subject=" & Subject & "&body=" & Body
ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:=HyperlinkText, TextToDisplay:=EmailAddress
MsgBox "메일 링크가 생성되었습니다!", vbInformation
End Sub
사용된 코드 설명
Dim EmailAddress As String
:
이메일 주소를 저장할 변수를 선언한다.
EmailAddress = ActiveCell.Value
:
현재 선택된 셀의 값을 이메일 주소로 가져온다.
Subject = “안녕하세요, 문의드립니다”
:
이메일 제목을 설정한다.
Body = “안녕하세요,” & vbCrLf & vbCrLf & “귀사 제품에 관심이 있어 연락드립니다.”
:
이메일 본문을 설정한다. vbCrLf는 줄바꿈을 의미한다.
WorksheetFunction.EncodeURL
:
공백이나 특수문자를 URL 인코딩하여 메일 링크에서 정상 작동하게 한다. (Excel 2016 이상 버전에서 사용 가능)
HyperlinkText = “mailto:” & EmailAddress & “?subject=” & Subject & “&body=” & Body
:
mailto 프로토콜을 사용하여 완전한 메일 링크를 생성한다.
ActiveSheet.Hyperlinks.Add
:
현재 셀에 하이퍼링크를 추가한다.

엑셀 2016 이전 버전에서는 EncodeURL 함수가 없으므로, 다음과 같이 사용자 정의 함수를 만들어 사용해야 한다.

Function URLEncode(ByVal StringToEncode As String) As String
Dim i As Integer
Dim char As String
Dim result As String
For i = 1 To Len(StringToEncode)
char = Mid(StringToEncode, i, 1)
If char = " " Then
result = result & "%20"
ElseIf char = vbCr Then
result = result & "%0D"
ElseIf char = vbLf Then
result = result & "%0A"
ElseIf (Asc(char) >= 48 And Asc(char) <= 57) Or _ (Asc(char) >= 65 And Asc(char) <= 90) Or _ (Asc(char) >= 97 And Asc(char) <= 122) Then result = result & char Else result = result & "%" & Hex(Asc(char)) End If Next i URLEncode = result End Function
사용된 코드 설명
Function URLEncode
:
문자열을 URL 인코딩 형식으로 변환하는 사용자 정의 함수를 생성한다.
For i = 1 To Len(StringToEncode)
:
문자열의 각 문자를 하나씩 처리한다.
char = Mid(StringToEncode, i, 1)
:
문자열에서 현재 위치의 문자를 가져온다.
If char = ” ” Then result = result & “%20”
:
공백을 %20으로 변환한다.
ElseIf (Asc(char) >= 48 And Asc(char) <= 57)
:
숫자(0-9)는 그대로 유지한다.
ElseIf (Asc(char) >= 65 And Asc(char) <= 90)
:
대문자(A-Z)는 그대로 유지한다.
ElseIf (Asc(char) >= 97 And Asc(char) <= 122)
:
소문자(a-z)는 그대로 유지한다.
result = result & “%” & Hex(Asc(char))
:
기타 특수문자는 %XX 형식으로 변환한다.

고급 매크로 코드

이제 더 강력한 Excel 매크로 메일 링크 생성 코드를 살펴보자. 이 코드는 선택한 범위의 데이터를 사용하여 여러 행에 개인화된 메일 링크를 생성한다.

Sub CreateBulkEmailLinks()
Dim rng As Range
Dim cell As Range
Dim EmailCol As Integer
Dim NameCol As Integer
Dim ProductCol As Integer
Dim EmailLink As String
Dim Subject As String
Dim Body As String
EmailCol = 2
NameCol = 1
ProductCol = 3
On Error Resume Next
Set rng = Application.InputBox("메일 링크를 생성할 범위를 선택하세요", "범위 선택", Type:=8)
On Error GoTo 0
If rng Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each cell In rng.Columns(EmailCol).Cells
If Len(cell.Value) > 0 Then
If InStr(cell.Value, "@") > 0 Then
Dim customerName As String
Dim productInfo As String
customerName = cell.Offset(0, NameCol - EmailCol).Value
productInfo = cell.Offset(0, ProductCol - EmailCol).Value
Subject = productInfo & " 관련 정보 안내"
Body = customerName & " 고객님," & vbCrLf & vbCrLf
Body = Body & productInfo & "에 관심을 가져주셔서 감사합니다." & vbCrLf & vbCrLf
Body = Body & "추가 문의사항이 있으시면 언제든지 연락주세요." & vbCrLf & vbCrLf
Body = Body & "감사합니다," & vbCrLf & "홍길동 드림"
Subject = URLEncode(Subject)
Body = URLEncode(Body)
EmailLink = "mailto:" & cell.Value & "?subject=" & Subject & "&body=" & Body
cell.Hyperlinks.Add Anchor:=cell, Address:=EmailLink, TextToDisplay:=cell.Value
cell.Font.ColorIndex = 5
cell.Font.Underline = True
End If
End If
Next cell
Application.ScreenUpdating = True
MsgBox "메일 링크 생성이 완료되었습니다!", vbInformation
End Sub
사용된 코드 설명
EmailCol, NameCol, ProductCol
:
이메일, 이름, 제품 정보가 있는 열 번호를 지정한다.
Set rng = Application.InputBox(“메일 링크를 생성할 범위를 선택하세요”, “범위 선택”, Type:=8)
:
사용자에게 대화상자를 표시하여 범위를 선택하게 한다.
Application.ScreenUpdating = False
:
화면 업데이트를 일시 중지하여 처리 속도를 향상시킨다.
For Each cell In rng.Columns(EmailCol).Cells
:
선택한 범위의 이메일 열에 있는 각 셀에 대해 반복한다.
If InStr(cell.Value, “@”) > 0 Then
:
셀 값이 유효한 이메일 주소인지 확인한다.
customerName = cell.Offset(0, NameCol – EmailCol).Value
:
이메일 셀을 기준으로 다른 열의 데이터를 가져온다.
Subject = productInfo & ” 관련 정보 안내”
:
제품 정보를 사용하여 개인화된 이메일 제목을 생성한다.
Body = customerName & ” 고객님,”
:
고객 이름을 사용하여 개인화된 이메일 본문을 생성한다.
cell.Font.ColorIndex = 5
:
생성된 하이퍼링크의 글꼴 색상을 변경한다.

이 코드는 고객 이름과 제품 정보를 활용하여 각 고객에게 개인화된 메일 링크를 생성하는 Excel 매크로 메일 링크 의 고급 활용 예시다.

매크로 버튼 연결

생성한 Excel 매크로 메일 링크 코드를 더 쉽게 사용할 수 있도록 워크시트에 버튼을 추가하고 매크로를 연결하는 방법을 알아보자.

  1. Excel 리본 메뉴에서 ‘개발자’ 탭 활성화하기
    1. ‘파일’ > ‘옵션’ > ‘리본 사용자 지정’으로 이동한다.
    2. ‘개발자’ 탭 옆의 체크박스를 선택하고 ‘확인’을 클릭한다.
  2. 버튼 추가하기
    1. ‘개발자’ 탭 > ‘삽입’ > ‘양식 컨트롤’ 섹션에서 ‘버튼’ 컨트롤을 선택한다.
    2. 워크시트에서 버튼을 배치할 위치를 클릭하고 드래그하여 크기를 조정한다.
  3. 매크로 연결하기
    1. 버튼을 그리면 ‘매크로 지정’ 대화상자가 나타난다.
    2. 앞서 생성한 매크로(CreateEmailLink 또는 CreateBulkEmailLinks)를 선택한다.
    3. ‘확인’을 클릭하여 버튼에 매크로를 연결한다.
  4. 버튼 텍스트 변경하기
    1. 버튼에서 마우스 오른쪽 버튼을 클릭하고 ‘컨트롤 편집’을 선택한다.
    2. 원하는 텍스트(예: ‘메일 링크 생성’)로 변경한다.

개발자 탭이 보이지 않는 경우, 다음과 같은 단계로 활성화할 수 있다.

Excel 버전 개발자 탭 활성화 경로
Excel 2016, 2019, 365 파일 > 옵션 > 리본 사용자 지정 > 개발자 체크
Excel 2013 파일 > 옵션 > 리본 사용자 지정 > 개발자 체크
Excel 2010 파일 > 옵션 > 리본 사용자 지정 > 개발자 체크
Excel 2007 Office 버튼 > Excel 옵션 > 인기 항목 > 리본 메뉴에 개발자 탭 표시 체크

버튼을 클릭하면 연결된 매크로가 실행되어 Excel 매크로 메일 링크 가 자동으로 생성된다.

활용 사례

Excel 매크로 메일 링크 기능은 다양한 업무 환경에서 활용할 수 있다. 몇 가지 실용적인 활용 사례를 살펴보자.

고객 관리 시스템

고객 데이터베이스에서 이름, 이메일, 구매 이력 등을 기반으로 개인화된 메일 링크를 생성하여 고객 관리 효율성을 높일 수 있다.

Sub CreateCustomerEmailLink()
Dim cell As Range
Dim customerName As String
Dim customerEmail As String
Dim lastPurchase As String
Dim purchaseDate As Date
Dim daysSince As Integer
Dim Subject As String
Dim Body As String
Set cell = ActiveCell
customerName = cell.Offset(0, 0).Value
customerEmail = cell.Offset(0, 1).Value
lastPurchase = cell.Offset(0, 2).Value
purchaseDate = cell.Offset(0, 3).Value
daysSince = Date - purchaseDate
Subject = "고객님의 " & lastPurchase & " 만족도 확인"
Body = customerName & " 고객님," & vbCrLf & vbCrLf
Body = Body & "저희 제품을 구매해 주셔서 감사합니다. " & daysSince & "일 전에 구매하신 " & lastPurchase & "에 대한 만족도를 알려주시면 감사하겠습니다." & vbCrLf & vbCrLf
Body = Body & "더 필요한 사항이 있으시면 언제든지 문의 주세요." & vbCrLf & vbCrLf
Body = Body & "감사합니다," & vbCrLf & "고객 지원팀 드림"
Subject = URLEncode(Subject)
Body = URLEncode(Body)
CreateMailLink customerEmail, Subject, Body
End Sub
Sub CreateMailLink(Email As String, Subject As String, Body As String)
Dim HyperlinkText As String
HyperlinkText = "mailto:" & Email & "?subject=" & Subject & "&body=" & Body
ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell.Offset(0, 1), Address:=HyperlinkText, TextToDisplay:="이메일 보내기"
End Sub
사용된 코드 설명
customerName = cell.Offset(0, 0).Value
:
현재 선택된 셀에서 고객 이름을 가져온다.
daysSince = Date – purchaseDate
:
마지막 구매일로부터 오늘까지의 일수를 계산한다.
Subject = “고객님의 ” & lastPurchase & ” 만족도 확인”
:
마지막 구매 제품 정보를 포함한 제목을 생성한다.
CreateMailLink customerEmail, Subject, Body
:
별도의 함수를 호출하여 메일 링크를 생성한다.

일정 관리 및 알림

회의 일정이나 중요한 이벤트에 대한 알림 이메일을 쉽게 보낼 수 있는 링크를 생성하여 일정 관리 효율성을 높일 수 있다.

Sub CreateMeetingInvitation()
Dim meetingDate As Date
Dim meetingTime As String
Dim meetingSubject As String
Dim attendees As String
Dim location As String
Dim Subject As String
Dim Body As String
meetingDate = ActiveCell.Value
meetingTime = ActiveCell.Offset(0, 1).Value
meetingSubject = ActiveCell.Offset(0, 2).Value
attendees = ActiveCell.Offset(0, 3).Value
location = ActiveCell.Offset(0, 4).Value
Subject = meetingSubject & " - 회의 초대 (" & Format(meetingDate, "yyyy-mm-dd") & ")"
Body = "안녕하세요," & vbCrLf & vbCrLf
Body = Body & "다음 회의에 참석해 주시기 바랍니다:" & vbCrLf & vbCrLf
Body = Body & "주제: " & meetingSubject & vbCrLf
Body = Body & "날짜: " & Format(meetingDate, "yyyy년 mm월 dd일") & vbCrLf
Body = Body & "시간: " & meetingTime & vbCrLf
Body = Body & "장소: " & location & vbCrLf & vbCrLf
Body = Body & "참석자: " & attendees & vbCrLf & vbCrLf
Body = Body & "회의 자료는 첨부파일을 참고해 주세요." & vbCrLf & vbCrLf
Body = Body & "감사합니다."
Subject = URLEncode(Subject)
Body = URLEncode(Body)
Dim EmailLink As String
EmailLink = "mailto:" & "?subject=" & Subject & "&body=" & Body
ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell.Offset(0, 5), Address:=EmailLink, TextToDisplay:="회의 초대장 보내기"
End Sub
사용된 코드 설명
meetingDate = ActiveCell.Value
:
현재 선택된 셀에서 회의 날짜를 가져온다.
Subject = meetingSubject & ” – 회의 초대 (” & Format(meetingDate, “yyyy-mm-dd”) & “)”
:
회의 주제와 날짜를 포함한 제목을 생성한다.
Format(meetingDate, “yyyy년 mm월 dd일”)
:
날짜 형식을 보기 좋게 변환한다.
EmailLink = “mailto:” & “?subject=” & Subject & “&body=” & Body
:
수신자를 비워두어 사용자가 직접 입력할 수 있게 한다.

대량 이메일 준비

마케팅 캠페인이나 고객 공지와 같은 대량 이메일을 준비할 때 각 수신자별 메일 내용을 사전에 검토할 수 있는 링크를 생성할 수 있다.

이러한 다양한 활용 사례를 통해 Excel 매크로 메일 링크 기능이 일상 업무에서 얼마나 유용하게 활용될 수 있는지 알 수 있다.

주의사항 및 팁

Excel 매크로 메일 링크 를 사용할 때 알아두면 좋은 주의사항과 팁을 살펴보자.

이메일 클라이언트 호환성

모든 이메일 클라이언트가 mailto: 링크의 모든 매개변수를 지원하지는 않는다. 특히 다음과 같은 부분에 주의해야 한다.

기능 제한사항
CC, BCC 일부 이메일 클라이언트에서만 지원됨
첨부파일 대부분의 이메일 클라이언트에서 보안상 지원하지 않음
HTML 본문 일부 이메일 클라이언트에서만 지원됨
본문 길이 URL 길이 제한으로 인해 너무 긴 본문은 잘릴 수 있음

URL 인코딩 관련 팁

메일 링크에서 특수 문자, 공백, 줄바꿈 등은 반드시 인코딩 처리해야 정상적으로 작동한다.

  • Excel 2016 이상 버전
    • WorksheetFunction.EncodeURL 함수를 사용할 수 있다.
  • Excel 2016 이전 버전
    • 앞서 제공한 URLEncode 사용자 정의 함수를 구현해야 한다.
  • 한글이 포함된 경우
    • URL 인코딩이 올바르게 되지 않을 수 있으므로 테스트가 필요하다.

보안 고려사항

메일 링크에 민감한 정보를 포함하지 않도록 주의해야 한다.

  • 개인정보
    • 주민등록번호, 계좌번호 등 민감한 개인정보는 포함하지 않는다.
  • 내부 기밀정보
    • 회사 내부 기밀정보는 메일 링크 본문에 직접 포함하지 않는다.
  • 비밀번호
    • 비밀번호나 접근 코드를 메일 링크에 포함하지 않는다.

템플릿 시스템 구현 팁

여러 종류의 이메일 템플릿을 미리 정의하고 상황에 맞게 선택할 수 있는 시스템을 구현하면 더욱 효율적이다.

Sub CreateEmailWithTemplate()
Dim EmailAddress As String
Dim TemplateName As String
Dim TemplateSubject As String
Dim TemplateBody As String
EmailAddress = ActiveCell.Value
TemplateName = Application.InputBox("사용할 템플릿 번호를 선택하세요:" & vbCrLf & _
"1. 제품 안내" & vbCrLf & _
"2. 견적 요청" & vbCrLf & _
"3. 미팅 요청", "템플릿 선택", "1")
Select Case TemplateName
Case "1"
TemplateSubject = "신규 제품 안내: XYZ 솔루션"
TemplateBody = "안녕하세요," & vbCrLf & vbCrLf & _
"저희 회사의 신규 XYZ 솔루션에 대해 안내드립니다." & vbCrLf & _
"자세한 내용은 첨부된 브로슈어를 참고해주세요."
Case "2"
TemplateSubject = "제품 견적 요청드립니다"
TemplateBody = "안녕하세요," & vbCrLf & vbCrLf & _
"귀사의 제품에 관심이 있어 견적을 요청드립니다." & vbCrLf & _
"필요한 수량: 100개" & vbCrLf & _
"납기 희망일: 2023년 12월 말"
Case "3"
TemplateSubject = "업무 미팅 요청"
TemplateBody = "안녕하세요," & vbCrLf & vbCrLf & _
"다음 주 중 편하신 시간에 30분 정도 미팅이 가능할까요?" & vbCrLf & _
"논의하고 싶은 주제: 제품 커스터마이징 옵션" & vbCrLf & vbCrLf & _
"감사합니다."
Case Else
Exit Sub
End Select
TemplateSubject = URLEncode(TemplateSubject)
TemplateBody = URLEncode(TemplateBody)
Dim EmailLink As String
EmailLink = "mailto:" & EmailAddress & "?subject=" & TemplateSubject & "&body=" & TemplateBody
ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:=EmailLink, TextToDisplay:=EmailAddress
MsgBox "선택한 템플릿으로 메일 링크가 생성되었습니다!", vbInformation
End Sub
사용된 코드 설명
TemplateName = Application.InputBox
:
사용자에게 템플릿 선택 대화상자를 표시한다.
Select Case TemplateName
:
선택한 템플릿 번호에 따라 다른 이메일 내용을 설정한다.
Case “1”, Case “2”, Case “3”
:
각각 다른 이메일 템플릿을 제공한다.
Case Else
:
취소하거나 잘못된 입력이 있는 경우 매크로를 종료한다.

이러한 주의사항과 팁을 참고하여 Excel 매크로 메일 링크 기능을 더 효과적으로 활용할 수 있다.

 

Excel 매크로 메일 링크 는 단순한 작업 자동화부터 복잡한 고객 관리 시스템까지 다양한 업무에 적용할 수 있는 유용한 기능이다.

기본 코드를 시작점으로 삼아 자신의 업무 환경에 맞게 커스터마이징하여 업무 효율성을 크게 향상시킬 수 있다.

지금 바로 자신의 엑셀 환경에 코드를 적용하고, 이메일 작성 시간을 대폭 줄여보자. 더 나아가 Outlook VBA를 학습하면 더 강력한 이메일 자동화 시스템을 구축할 수 있다.

Mingg`s Diary
밍구
공부 목적 블로그