Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

엑셀(Excel) 템플릿으로 동적 이메일 생성기 구축하기 – VBA 자동화 완벽 가이드

엑셀(Excel) 템플릿으로 동적 이메일 생성기 구축하기 – VBA 자동화 완벽 가이드

이메일은 가장 강력한 업무 소통 도구 중 하나입니다. 이메일 작성 과정을 자동화하면 시간을 크게 절약할 수 있고, 모든 메일에서 일관된 톤과 형식을 유지할 수 있습니다. 엑셀 VBA를 활용하면 미리 만들어 둔 템플릿에 받는 사람 정보를 자동으로 채워 넣는 동적 이메일 생성기를 손쉽게 구축할 수 있습니다.

이 글에서는 엑셀에서 템플릿 기반의 동적 이메일 생성기를 만드는 전체 과정을 단계별로 살펴보겠습니다.

시작 전 준비 사항

  • Microsoft Excel (2016 이상 버전)
  • 엑셀에 대한 기본적인 이해
  • VBA 편집기 사용 가능 환경 (개발 도구 탭 활성화 필요)

1단계: 엑셀 통합 문서 설정하기

데이터 시트(Data) 만들기

  • 새 시트를 추가하고 이름을 Data로 지정합니다.
  • 받는 사람 정보를 입력할 열을 아래와 같이 구성합니다:
    • First Name (이름)
    • Last Name (성)
    • Email (이메일 주소)
    • Company (회사명)
    • Department (부서)
    • Role (직책)
    • Meeting Topic (회의 주제)
    • Action Item (후속 조치 사항)
    • Sender Name (보내는 사람 이름)

엑셀(Excel) 템플릿으로 동적 이메일 생성기 구축하기 – VBA 자동화 완벽 가이드

템플릿 시트(Template) 만들기

  • 또 다른 시트를 만들고 이름을 Template으로 지정합니다.
  • 다음 열을 생성합니다:
    • Template ID (템플릿 번호)
    • Template Name (템플릿 이름)
    • Subject Line (메일 제목)
    • Email Body (메일 본문)

2단계: 이메일 템플릿 작성하기

템플릿에는 {{FirstName}}, {{Company}}, {{Department}}, {{Role}} 같은 플레이스홀더(placeholder)를 사용합니다. 메일 발송 시점에 이 자리가 실제 데이터로 자동 교체되는 방식입니다.

템플릿 1: 신규 입사자 온보딩 메일

Dear {{FirstName}},
Welcome to {{Company}}! We're excited to have you on board.
Your account has been set up with the following details:
Department: {{Department}}
Role: {{Role}}
Best regards,
HR Team

이 템플릿은 신규 입사자에게 자동으로 발송되는 온보딩 메일용입니다. 발송 전에 플레이스홀더가 각 수신자의 실제 정보로 대체되므로, 모든 직원에게 개인화된 인사 메일을 보낼 수 있습니다.

플레이스홀더 설명:

  • {{FirstName}}: 입사자의 이름
  • {{Company}}: 회사명
  • {{Department}}: 배치될 부서
  • {{Role}}: 담당할 직무

템플릿 2: 회의 후 후속 메일

Hi {{FirstName}},
Thank you for your time during our discussion about {{Meeting Topic}}. As discussed, I'm following up on {{Action Item}}.
Let me know if you have any questions.
Best regards,
{{Sender Name}}

엑셀(Excel) 템플릿으로 동적 이메일 생성기 구축하기 – VBA 자동화 완벽 가이드

3단계: VBA 코드 삽입하기

VBA 편집기를 여는 방법은 다음과 같습니다:

  • 개발 도구(Developer) 탭 >> Visual Basic 선택
  • Insert(삽입) 클릭 >> Module(모듈) 선택
  • 아래 코드를 복사하여 붙여넣습니다.

엑셀(Excel) 템플릿으로 동적 이메일 생성기 구축하기 – VBA 자동화 완벽 가이드

Option Explicit
Public Sub GenerateEmails()
 Dim ws As Worksheet
 Dim templateWs As Worksheet
 Dim lastRow As Long
 Dim i As Long
 Dim emailBody As String
 Dim subjectLine As String
 Dim templateID As Long
 
 ' Set references to worksheets
 Set ws = ThisWorkbook.Sheets("Data")
 Set templateWs = ThisWorkbook.Sheets("Templates")
 
 ' Find last row with data
 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
 
 ' Get template ID from user
 templateID = InputBox("Enter the Template ID number:", "Select Template")
 
 ' Get template text
 subjectLine = GetTemplate("Subject_Line", templateID)
 emailBody = GetTemplate("Email_Body", templateID)
 
 ' Convert special characters to proper line breaks
 emailBody = Replace(emailBody, "\n", vbNewLine)
 
 ' Create Outlook items
 Dim outlookApp As Object
 Dim emailItem As Object
 
 Set outlookApp = CreateObject("Outlook.Application") 
 ' Loop through each row of data
 For i = 2 To lastRow
 ' Create new email
 Set emailItem = outlookApp.CreateItem(0)
 
 With emailItem
 ' Replace placeholders with actual data
 .Subject = ReplaceFields(subjectLine, i, ws)
 .Body = ReplaceFields(emailBody, i, ws) ' Changed from .HTMLBody to .Body
 .To = ws.Cells(i, 3).Value ' Email address in column C
 .Display ' Display email (change to .Send to send automatically)
 End With
 Next i
 
 Set outlookApp = Nothing
End Sub
Private Function GetTemplate(field As String, templateID As Long) As String
 Dim templateWs As Worksheet
 Dim templateRow As Range
 
 Set templateWs = ThisWorkbook.Sheets("Templates")
 
 ' Find the template row
 Set templateRow = templateWs.Columns(1).Find(What:=templateID, LookIn:=xlValues, LookAt:=xlWhole)
 
 If Not templateRow Is Nothing Then
 Select Case field
 Case "Subject_Line"
 GetTemplate = templateWs.Cells(templateRow.Row, 3).Value
 Case "Email_Body"
 GetTemplate = templateWs.Cells(templateRow.Row, 4).Value
 End Select
 End If
End Function
Private Function ReplaceFields(text As String, rowNum As Long, ws As Worksheet) As String
 Dim result As String
 result = text 
 ' Replace all field placeholders with actual data
 result = Replace(result, "{{FirstName}}", ws.Cells(rowNum, 1).Value)
 result = Replace(result, "{{LastName}}", ws.Cells(rowNum, 2).Value)
 result = Replace(result, "{{Company}}", ws.Cells(rowNum, 4).Value)
 result = Replace(result, "{{Department}}", ws.Cells(rowNum, 5).Value)
 result = Replace(result, "{{Role}}", ws.Cells(rowNum, 6).Value)
 result = Replace(result, "{{Meeting Topic}}", ws.Cells(rowNum, 7).Value)
 result = Replace(result, "{{Action Item}}", ws.Cells(rowNum, 8).Value)
 result = Replace(result, "{{Sender Name}}", ws.Cells(rowNum, 9).Value)
 
 ReplaceFields = result
End Function

4단계: 이메일 생성기 실행하기

  • 개발 도구(Developer) 탭에서 매크로(Macros)를 클릭합니다.
  • GenerateEmails를 선택한 후 실행(Run) 버튼을 누릅니다.

엑셀(Excel) 템플릿으로 동적 이메일 생성기 구축하기 – VBA 자동화 완벽 가이드

  • 메시지 박스가 나타나면 Template ID1을 입력합니다.
  • 그러면 템플릿 1 형식에 맞춰 모든 메일이 생성됩니다.

엑셀(Excel) 템플릿으로 동적 이메일 생성기 구축하기 – VBA 자동화 완벽 가이드

  • 매크로를 다시 실행(Run)합니다.
  • 이번에는 메시지 박스에 Template ID: 2를 입력합니다.

엑셀(Excel) 템플릿으로 동적 이메일 생성기 구축하기 – VBA 자동화 완벽 가이드

이번에는 템플릿 2 형식에 따라 모든 메일이 생성됩니다.

엑셀(Excel) 템플릿으로 동적 이메일 생성기 구축하기 – VBA 자동화 완벽 가이드

  • 발송 전에 생성된 메일 내용을 반드시 검토하세요.
  • 검토 없이 즉시 일괄 발송하려면 코드의 .Display.Send로 변경하면 됩니다.

커스터마이징 팁

새로운 플레이스홀더 필드 추가하기

  • Data 시트에 새 열을 추가합니다.
  • VBA 코드의 ReplaceFields 함수에 해당 필드를 포함하도록 수정합니다.
  • 이메일 템플릿에 {{FieldName}} 형식으로 새 플레이스홀더를 추가합니다.

HTML 서식 활용하기

이메일 템플릿에 HTML 서식을 적용할 수도 있습니다:

<p style="color: blue;">This text will be blue</p>
<strong>This text will be bold</strong>

마무리

이 튜토리얼을 통해 미리 정의된 템플릿과 VBA 자동화를 활용해 엑셀에서 동적 이메일 생성 환경을 구축하는 방법을 익혔습니다. 이러한 템플릿은 비즈니스 커뮤니케이션, 고객 후속 연락, 자동 알림 발송 등 다양한 용도로 활용할 수 있습니다. 이 이메일 생성기는 기본 골격 역할을 하며, 여러분의 필요에 맞게 얼마든지 확장할 수 있습니다. 템플릿을 만들고, 데이터 시트를 업데이트하고, VBA 코드의 플레이스홀더만 조정하면 됩니다. 실무 환경에 적용하기 전에는 반드시 충분한 테스트를 거치시기 바랍니다.