VBA – Excel에서 Outlook으로 이메일 보내기

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 5월 3, 2023

이 튜토리얼에서는 VBA를 사용하여 Excel에서 Outlook으로 이메일을 보내는 방법을 보여 줍니다.

활성 통합 문서 보내기

Function SendActiveWorkbook(strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As Boolean
   On Error Resume Next
   Dim appOutlook As Object
   Dim mItem As Object
'새로운 아웃룩 객체를 생성합니다
   Set appOutlook = CreateObject("Outlook.Application")
   Set mItem = appOutlook .CreateItem(0)
   With mItem 
     .To = strTo
     .CC = ""
     .Subject = strSubject
     .Body = strBody
     .Attachments.Add ActiveWorkbook.FullName
'이메일을 즉시 보내거나 보낼 내용을 화면에 표시합니다
    .Display 'or .Send
   End With
'객체를 비웁니다
  Set mItem = Nothing
  Set appOutlook = Nothing
End Function

아래 프로시저에서와 같이 위의 함수를 호출할 수 있습니다.

Sub SendMail()
   Dim strTo As String
   Dim strSubject As String
   Dim strBody As String
'변수들에 대해 정의합니다
   strTo = "jon.smith@gmail.com"
   strSubject = "재무 파일 첨부 드립니다"
   strBody = "내용을 입력해 주세요"
'이메일을 보내도록 함수를 호출합니다
   If SendActiveWorkbook(strTo, strSubject, , strBody) = true then
      Msgbox "이메일이 성공적으로 생성되었습니다"
   Else
      Msgbox "이메일 생성을 실패하였습니다"
   End if
End Sub

Early 바인딩을 사용하여 Outlook 객체 라이브러리 참조하기

위의 코드는 Late 바인딩을 사용하여 Outlook 객체를 참조합니다. 원하는 경우 Early 바인딩을 사용하여 Excel VBA에 대한 참조를 추가하고 Outlook 애플리케이션 및 Outlook 메일 항목을 선언할 수 있습니다. Early 바인딩을 사용하면 코드가 더 빠르게 실행되지만 사용자가 PC에 동일한 버전의 Microsoft Office가 있어야 하므로 제한이 있습니다.

도구 메뉴의 참조를 클릭하여 참조 대화상자를 표시합니다.

사용 중인 Office 버전에 대한 Microsoft Outlook Object Library를 참조로 추가합니다.

그러면 코드에서 이 참조를 사용할 수 있습니다.

vba outlook early binding

 

Early 바인딩의 가장 큰 장점은 사용 가능한 객체를 표시하는 드롭다운 목록을 사용할 수 있다는 점입니다.

활성 통합 문서에서 워크 시트 보내기

워크 시트 하나를 보내려면 먼저 기존 통합 문서에서 해당 시트만 포함된 새 통합 문서를 만든 다음 해당 시트를 보내야 합니다.

Function SendActiveWorksheet(strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As Boolean
   On Error GoTo eh
'객체를 정의할 변수를 선언합니다
   Dim wbDestination As Workbook
   Dim strDestName As String
   Dim wbSource As Workbook
   Dim wsSource As Worksheet
   Dim OutApp As Object
   Dim OutMail As Object
   Dim strTempName As String
   Dim strTempPath As String
'새 통합문서를 만들고 변수로 정의합니다
   Set wbDestination = Workbooks.Add
   strDestName = wbDestination.Name
'소스가 될 통합문서와 워크시트를 변수로 정의합니다
   Set wbSource = ActiveWorkbook
   Set wsSource = wbSource.ActiveSheet
'활성시트를 새 통합문서로 복사합니다
   wsSource.Copy After:=Workbooks(strDestName).Sheets(1)
'통합문서를 임시 이름으로 저장합니다
   strTempPath = Environ$("temp") & "\"
   strTempName = "List obtained from " & wbSource.Name & ".xlsx"
   With wbDestination
      .SaveAs strTempPath & strTempName
'통합문서를 이메일에 첨부합니다
      Set OutApp = CreateObject("Outlook.Application")
      Set OutMail = OutApp.CreateItem(0)
      With OutMail
         .To = strTo
         .Subject = strSubject
         .Body = strBody
         .Attachments.Add wbDestination.FullName
'Send를 사용하여 즉시 보내거나 Display를 사용하여 화면에 이메일을 표시합니다
         .Display 'or .Send
      End With
      .Close False
  End With
'임시로 저장한 통합문서를 삭제합니다
   Kill strTempPath & strTempName
'객체를 초기화하여 메모리를 초기화합니다
   Set wbDestination = Nothing
   Set wbSource = Nothing
   Set wsSource = Nothing
   Set OutMail = Nothing
   Set OutApp = Nothing
Exit Function
eh:
   MsgBox Err.Description
End Function

이 함수를 실행하기 위해 다음 프로시저를 사용할 수 있습니다.

Sub SendSheetMail()
   Dim strTo As String
   Dim strSubject As String
   Dim strBody As String
   strTo = "jon.smith@gmail.com"
   strSubject = "첨부된 재무 파일을 확인 부탁드립니다"
   strBody = "이메일 본문을 작성하세요"
   If SendActiveWorksheet(strTo, strSubject, , strBody) = True Then
      MsgBox "Email이 성공적으로 생성되었습니다"
   Else
      MsgBox "Email 생성이 실패하였습니다!"
   End If
End Sub

 

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기