Excel 튜토리얼 – Excel 에서 이메일 보내기
일반적으로 Outlook, Gmail 등의 이메일 클라이언트를 사용하여 이메일을 보냅니다. 하지만 많은 사용자가 데이터를 Excel 통합 문서에 저장하고 작업 중 일부 데이터를 다른 사람과 공유해야 할 필요가 있습니다. 따라서 이메일 클라이언트를 따로 실행할 필요 없이 Excel 통합 문서에서 직접 이메일을 보내야 하며, 이는 시간을 절약해 줍니다. 이 단계별 튜토리얼에서는 다양한 조건 하에서 Excel 에서 이메일을 보내는 방법을 안내합니다。
참고: 다음 방법을 적용하기 전에 컴퓨터에 Outlook 이메일 클라이언트를 구성하고 기본 이메일 클라이언트로 설정해야 합니다。
목차:[ 숨기기 ]
1. Excel 에서 이메일 보내기의 기본 사항
이 섹션에서는 Excel 에서 이메일을 보내는 기본 사항을 소개합니다。
1.1 Excel 내장 기능으로 Excel 에서 이메일 보내기
단순한 이메일만 보내려는 경우(수신자, 제목, 참조(Cc), 본문 필드만 포함) Excel 의 내장 기능을 활용할 수 있습니다。
1.1.1 수식을 사용하여 Excel 에서 이메일 보내기
아래 표와 같이 주어진 필드를 기반으로 Excel 에서 서로 다른 이메일을 보내려면 해당 필드의 셀 참조를 사용해 다양한 하이퍼링크 수식을 생성할 수 있습니다。 이메일 하이퍼링크를 생성한 후 필요한 하이퍼링크를 클릭하면 자동으로 이메일이 전송됩니다。
참고: 수신자 또는 참조(Cc) 필드에 둘 이상의 수신자가 있는 경우 세미콜론(;)으로 구분하세요。

이 섹션은 하이퍼링크 수식에 각각 이메일 주소, 참조(Cc) 수신자, 제목 줄, 본문 텍스트를 추가하는 단계를 네 부분으로 나누어 설명합니다。 다음 단계를 따라 진행하세요。
「HYPERLINK」 함수의 구문과 인수는 다음과 같습니다。
구문
HYPERLINK(link_location, [friendly_name])
인수
여기서는 수식의 일부로 “mailto:“를 사용하여 이메일 수신자를 추가합니다。 이 예시에서 첫 번째 수신자의 이메일 주소은 B2 셀에 있으므로 “mailto:“를 추가하고 B2 셀을 참조해야 합니다。
“mailto:”&B2
1. 하이퍼링크를 표시할 셀을 선택합니다。 여기서는 F2 셀을 선택합니다。
2. 그런 다음 다음 수식을 입력합니다。
=HYPERLINK("mailto:"&B2) 
참고: 「Enter」 키를 누르면 아래 스크린샷과 같이 하이퍼링크가 생성됩니다。 링크를 클릭하면 Outlook 이메일이 생성되고 수신자의 이메일 주소이 자동으로 수신자 필드에 입력됩니다。

수신자의 이메일 주소이 이제 하이퍼링크 수식에 추가되었습니다。 필요에 따라 제목 줄, 참조(Cc) 수신자, 본문 텍스트를 추가하려면 다음 단계를 계속 진행하세요。
1.1.1.2 하이퍼링크 수식에 참조(Cc) 수신자 추가하기
하이퍼링크 함수에 참조(Cc) 수신자를 추가하려면 수식의 일부로 「?cc=」를 다음과 같이 추가하세요。
F2 셀의 수식은 다음과 같아야 합니다:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2) 
하이퍼링크 함수에 제목 줄을 추가하려면 수식의 일부로 「&subject=」를 다음과 같이 추가하세요。
이제 F2 셀의 수식은 다음과 같이 표시되어야 합니다:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2) 
1.1.1.4 줄바꿈이 포함된 본문 텍스트를 하이퍼링크 수식에 추가하기
마지막 단계는 하이퍼링크 수식에 본문 텍스트를 추가하는 것입니다. 예시에서 볼 수 있듯이 E2 셀의 두 줄 텍스트는 줄바꿈으로 구분되어 있으며, 이메일 본문에서도 줄바꿈을 유지하려고 합니다. 이 경우 Outlook 이 줄바꿈을 인식할까요? 확인해 보겠습니다。
하이퍼링크 수식에 본문 텍스트를 추가하려면 수식의 일부로 “&body=”를 다음과 같이 추가해야 합니다。
이제 F2 셀의 수식은 다음과 같이 표시됩니다:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2) 
참고: 「Enter」 키를 누르고 링크를 클릭하면 새 이메일에서 이메일 본문의 내용이 한 줄로 표시되는 것을 확인할 수 있습니다。

이메일 본문을 여러 줄로 표시하려면 줄바꿈을 삽입하고 싶은 위치의 텍스트에 개행 문자 코드 「%0A」를 추가하여 셀 내용을 수정해야 합니다。 스크린샷 참조:

위 단계에서 이메일 필드로 Link_location 인수를 완료했습니다。 이 섹션에서는 다음 인수인 [friendly_name]을 완료합니다。
이 예시에서는 하이퍼링크 셀에 “xx 에게 이메일 보내기”라는 텍스트를 표시하려고 합니다. 여기서 xx 는 A2 셀의 수신자 이름입니다。 따라서 F2 셀의 수식은 다음과 같이 변경되어야 합니다:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2) 「Enter」 키를 눌러 결과를 확인하세요。

이 수식 셀을 선택하고 「자동 채우기 핸들」을 아래로 드래그하여 다른 이메일 하이퍼링크를 생성합니다。 스크린샷 참조:

1.1.2 하이퍼링크 함수로 Excel 에서 이메일 보내기
앞서 설명한 하이퍼링크 수식 외에도 Excel 에서 「하이퍼링크 만들기」 함수를 사용하여 수동으로 이메일 하이퍼링크를 생성할 수 있습니다。 이 섹션에서는 그 단계를 안내합니다。
1. 하이퍼링크를 삽입할 셀을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 「링크」를 선택합니다。

2. 나타나는 「하이퍼링크 만들기」 대화 상자에서 다음처럼 설정합니다。

하이퍼링크를 클릭하면 아래 스크린샷과 같이 지정한 수신자, 제목, 본문 필드가 포함된 Outlook 이메일이 생성됩니다。

참고:
1.2 VBA 스크립트로 셀에 있는 여러 수신자에게 이메일 보내기
위 예시에서 볼 수 있듯이 셀 내에 세미콜론으로 구분된 여러 개의 이메일 주소이 표시됩니다。 아래 스크린샷과 같이 이메일 주소 목록이 있고 이들에게 하나의 이메일 또는 개별 이메일을 보내고 싶다면 다음 VBA 코드가 도움이 됩니다。

1.2.1 VBA 스크립트로 셀에 있는 여러 수신자에게 하나의 이메일 보내기
1. 이메일을 보낼 모든 이메일 주소이 포함된 워크시트에서 「Alt」 + “F11" 키를 눌러 「Microsoft Visual Basic for Applications」 창을 엽니다。
2. 「Microsoft Visual Basic for Applications」 창에서 「삽입」 > 「모듈」을 클릭한 후 다음 코드를 「모듈(코드)」 창에 붙여넣습니다。

VBA 코드: 이메일 주소 목록에 이메일 보내기
Sub sendmultiple()
'updateby Extendoffice 20220802
Dim xOTApp As Object
Dim xMItem As Object
Dim xCell As Range
Dim xRg As Range
Dim xEmailAddr As String
Dim xTxt As String
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xOTApp = CreateObject("Outlook.Application")
For Each xCell In xRg
If xCell.Value Like "*@*" Then
If xEmailAddr = "" Then
xEmailAddr = xCell.Value
Else
xEmailAddr = xEmailAddr & ";" & xCell.Value
End If
End If
Next
Set xMItem = xOTApp.CreateItem(0)
With xMItem
.To = xEmailAddr
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
End With
End Sub 3. “F5" 키를 눌러 코드를 실행하면 「Kutools for Excel」 대화 상자가 나타납니다。 이메일 주소 목록을 선택하고 「확인」을 클릭합니다。

참고:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel" 코드 실행 후 범위 선택의 모든 이메일 주소이 메시지 창의 수신자 필드에 표시됩니다。 스크린샷 참조:

1.2.2 VBA 스크립트로 셀에 나열된 각 수신자에게 개별적으로 이메일 보내기
위 코드는 범위 선택의 모든 이메일 주소을 메시지 창의 수신자 필드에 추가합니다。 서로의 이메일 주소을 보이지 않도록 각 셀의 이메일 주소록에게 개별적으로 이메일을 보내고 싶다면 다음 VBA 스크립트를 사용해 보세요。
1. 이메일을 보낼 모든 이메일 주소이 포함된 워크시트에서 「Alt」 + “F11" 키를 눌러 「Microsoft Visual Basic for Applications 창」을 엽니다。
2. 「Microsoft Visual Basic for Applications」 창에서 「삽입」 > 「모듈」을 클릭한 후 다음 코드를 모듈(코드) 창에 붙여넣습니다。
VBA 코드: 셀에 있는 각 이메일 주소록에게 개별적으로 이메일 보내기
Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
Dim xRg As Range
Dim xRgEach As Range
Dim xRgVal As String
Dim xAddress As String
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
For Each xRgEach In xRg
xRgVal = xRgEach.Value
If xRgVal Like "?*@?*.?*" Then
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.To = xRgVal
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
'.Send
End With
End If
Next
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub 3. 그런 다음 「도구」 > 「참조」를 클릭합니다。 「참조 – VBAProject」 대화 상자에서 “Microsoft Outlook 16.0 Object Library"를 찾아 선택한 후 「확인」 버튼을 클릭하여 변경 사항을 저장합니다。

4. “F5" 키를 눌러 코드를 실행하면 「Kutools for Excel」 대화 상자가 나타납니다。 이메일 주소 목록을 선택하고 「확인」을 클릭합니다。

참고:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel" 이 예시에서는 범위 선택에 여섯 개의 이메일 주소이 있으므로 아래 스크린샷과 같이 각각의 이메일 주소록이 수신자 필드에 포함된 여섯 개의 Outlook 메시지 창이 자동으로 생성됩니다。

5. 마지막으로 「보내기」 버튼을 클릭하여 하나씩 이메일을 보냅니다。
2. Excel 에서 보낸 이메일에 첨부 파일 삽입 또는 Outlook 서명 추가하기(VBA 스크립트 사용)
이 섹션에서는 Excel 에서 보낸 이메일에 첨부 파일 삽입 또는 Outlook 기본 서명을 추가하는 방법을 안내합니다。
2.1 Excel 에서 보낸 이메일에 첨부 파일 삽입 추가하기
여기서는 첨부 파일 삽입의 다양한 사례를 설명하며 필요에 따라 적절한 방법을 선택할 수 있습니다。 이 섹션에서는 다음 링크 중 하나를 클릭하여 해당 방법으로 이동할 수 있습니다:
Excel 에서 폴더 내의 하나 이상의 파일을 첨부파일로 이메일에 첨부하려면 다음 VBA 코드를 적용할 수 있습니다。
1. 「Alt」 + “F11" 키를 누릅니다。
2. 열리는 「Microsoft Visual Basic for Applications」 창에서 「삽입」 > 「모듈」을 클릭합니다。 그런 다음 다음 VBA 코드를 모듈(코드) 창에 붙여넣습니다。
VBA 코드: Excel 에서 폴더의 파일을 첨부파일로 이메일 보내기
Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
Dim xStrFile As String
Dim xFilePath As String
Dim xFileDlg As FileDialog
Dim xFileDlgItem As Variant
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
If xFileDlg.Show = -1 Then
With xMailOut
.BodyFormat = olFormatRichText
.To = "xxx@aaa.com"
.Subject = "test"
.HTMLBody = "test"
For Each xFileDlgItem In xFileDlg.SelectedItems
.Attachments.Add xFileDlgItem
Next xFileDlgItem
.Display
End With
End If
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub 참고:
3. 그런 다음 「도구」 > 「참조」를 클릭하세요。 「참조 – VBAProject」 대화 상자에서 「Microsoft Outlook 16.0 개체 라이브러리」 항목을 찾아 선택한 후 「확인」 버튼을 클릭하여 변경 사항을 저장하세요。

4. “F5" 키를 눌러 코드를 실행하면 「찾아보기」 창이 열립니다。 이메일에 첨부할 파일을 선택하세요한 후 「확인」을 클릭합니다。

그러면 메시지 창이 열립니다。 선택한 파일이 첨부 항목 필드에 첨부파일로 표시되는 것을 확인할 수 있습니다。

2.1.2 현재 워크시트을(를) 첨부파일로 이메일 보내기
Excel 에서 현재 워크시트을(를) 첨부파일로 이메일로 보내고자 한다면, 이 섹션의 VBA 스크립트를 적용할 수 있습니다。
1. 「Alt」 + “F11" 키를 누르세요。
2. 열리는 「Microsoft Visual Basic for Applications」 창에서 「삽입」 > 「모듈」을 클릭합니다。 그런 다음 다음 VBA 코드를 「모듈(코드)」 창에 붙여넣습니다。
VBA 코드: 현재 워크시트을(를) 첨부파일로 이메일 보내기
Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte features"
.Body = "Please check and read this document."
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub 참고:
3. “F5" 키를 눌러 코드를 실행하면 현재 워크시트이(가) Excel 통합 문서으로 저장되어 자동으로 메시지 창에 첨부파일로 삽입됩니다。 스크린샷 참조:

참고: 현재 워크시트만 포함된 첨부된 통합 문서는 원본 통합 문서와 동일한 이름을 가집니다。 또한 코드를 실행한 시간도 워크북 이름에 추가됩니다。
2.1.3 현재 워크북을(를) 첨부파일로 이메일 보내기
Excel 에서 현재 워크시트을(를) 첨부파일로 이메일 보내는 VBA 코드를 살펴본 후, 여기에서는 전체 통합 문서를 첨부파일로 이메일로 보내는 또 다른 VBA 스크립트를 제공합니다。 다음 단계를 따르세요。
1. 「Alt」 + “F11" 키를 누르세요。
2. 열린 「Microsoft Visual Basic for Applications」 창에서 「삽입」 > 「모듈」을 클릭하세요。 그런 다음 다음 VBA 코드를 모듈(코드) 창에 붙여넣으세요。
VBA 코드: Excel 에서 현재 워크북을(를) 첨부파일로 이메일 보내기
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 참고:
3. “F5" 키를 눌러 코드를 실행하면 현재 워크북이(가) 자동으로 메시지 창에 첨부파일로 삽입됩니다。 스크린샷 참조:

2.1.4 전체 통합 문서를 PDF 첨부파일로 이메일 보내기
대부분의 사용자는 Excel 통합 문서을(를) PDF 파일으로 저장한 후 이를 첨부파일로 다른 사람에게 보내는 경향이 있습니다. 이 섹션에서는 통합 문서를 수동으로 PDF 파일으로 저장하지 않고도 현재 열려 있는 통합 문서를 PDF 첨부파일로 하여 Excel 에서 직접 이메일을 보내는 방법을 안내합니다。
1. 「Alt」 + “F11" 키를 누르세요。
2. 열린 「Microsoft Visual Basic for Applications」 창에서 「삽입」 > 「모듈」을 클릭하세요。 그런 다음 다음 VBA 코드를 모듈(코드) 창에 붙여넣으세요。
VBA 코드: 전체 통합 문서를 PDF 첨부파일로 이메일 보내기
Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName
Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FilePath
.Display 'or use .Send
End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub 참고:
3. “F5" 키를 눌러 코드를 실행합니다。 그러면 현재 워크북이(가) 새 메시지 창에 자동으로 PDF 파일 첨부파일로 삽입됩니다。 스크린샷 참조:

2.1.5 현재 워크시트을(를) PDF 첨부파일로 이메일 보내기
예를 들어, “월간 매출”이라는 이름의 통합 문서가 있고, “매출 보고서”라는 워크시트에 매출 보고서 테이블 작성을 완료했으며 이 워크시트를 동료들에게 PDF 파일으로 보내고 싶다고 가정해 봅시다。 다음 VBA 코드가 도움이 될 수 있습니다。
1. 「Alt」 + “F11" 키를 누르세요。
2. 열리는 「Microsoft Visual Basic for Applications」 창에서 「삽입」 > 「모듈」을 클릭합니다。 그런 다음 다음 VBA 코드를 모듈(코드) 창에 붙여넣습니다。
VBA 코드: 현재 워크시트을(를) PDF 첨부파일로 이메일 보내기
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 참고:
3. “F5" 키를 눌러 코드를 실행합니다。 그러면 현재 워크시트이(가) 새 메시지 창에 자동으로 PDF 파일 첨부파일로 삽입됩니다。 스크린샷 참조:

2.2 Excel 에서 보낸 이메일에 Outlook 서명 삽입하기
위의 사례를 예로 들면, 위의 VBA 코드를 적용하여 Excel 에서 현재 워크시트을(를) PDF 파일 첨부파일로 보내지만 메시지 창에는 Outlook 서명을 추가할 수 없습니다. Excel 에서 보낸 이메일에 Outlook 기본 서명을 유지하려면 다음 방법이 도움이 됩니다。
아래에 두 개의 VBA 코드가 나와 있습니다。
VBA 코드 1: 이 코드는 Outlook 서명을 유지하는 데 도움이 됩니다。
VBA 코드 2: 이 코드는 현재 워크시트을(를) PDF 첨부파일로 이메일 보내는 데 도움이 됩니다。
VBA 코드 1: Outlook 서명 유지하기
.HTMLBody = "Email body" & "
" & .HTMLBody VBA 코드 2: 현재 워크시트을(를) PDF 첨부파일로 이메일 보내기
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 1. 일반적으로 「Alt」 + “F11" 키를 눌러 「Microsoft Visual Basic for Applications」 창을 열어야 합니다。
2. 「Microsoft Visual Basic for Applications」 창에서 「삽입」 > 「모듈」을 클릭합니다. 그런 다음 위의 VBA 코드 2 을(를) 모듈(코드) 창에 붙여넣습니다。
3. Excel 에서 보낸 이메일에 Outlook 기본 서명을 유지하려면 다음과 같이 VBA 코드 2 을(를) 수정해야 합니다:

수정 후 완전한 코드는 다음과 같습니다。
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Display
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.HTMLBody = "Email body" & "
" & .HTMLBody
.Attachments.Add FileName
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 4. “F5" 키를 눌러 코드를 실행합니다。 그러면 현재 워크시트이(가) PDF 파일으로 첨부된 새 메시지 창이 열리며, Outlook 기본 서명이 이메일 본문 끝부분에 자동으로 삽입됩니다。

3. 조건이 충족되면 Excel 에서 자동으로 이메일 보내기(VBA 스크립트 사용)
위의 예제에서는 수동으로 코드를 실행하여 이메일을 전송해야 합니다. 특정 조건(예: 셀 값이 특정 수치에 도달하거나 변경되거나 날짜가 도래하는 경우 등)이 충족될 때 코드가 자동으로 실행되어 이메일이 자동으로 전송되도록 하고 싶다면, 이 섹션에서는 Excel 사용자가 Google 에서 자주 검색하는 조건을 정리하여 특정 조건이 충족될 때 Excel 에서 자동으로 이메일을 보내는 데 도움을 줍니다。
3.1 셀 값이 특정 수치에 도달하면 자동으로 이메일 보내기
아래 스크린샷과 같이, 셀 D6 에 총 매출액이 포함된 매출 테이블이 있다고 가정해 봅시다. 총 매출액에 따라 상사에게 자동으로 이메일을 보내고자 합니다. 예를 들어, 총 매출액이 10000 을 초과하면 자동으로 이메일을 생성하거나 보내고, 총 매출액이 10000 이하이면 아무 작업도 수행하지 않습니다。

1. 매출 테이블이 포함된 워크시트에서 시트 탭을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 「코드 보기」를 클릭합니다。

2. 열리는 「Microsoft Visual Basic for Applications」 창에서 다음 VBA 코드를 「시트(코드)」 창에 붙여넣습니다。

VBA 코드: Excel 에서 셀 값이 특정 수치에 도달하면 자동으로 이메일 보내기
Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub 참고:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6") 이제부터 셀 D6 의 값이 10000 을 초과하면 아래 스크린샷과 같이 이메일이 생성됩니다。

3.2 셀 값이 변경되면 자동으로 이메일 보내기
아래 스크린샷과 같이, 여러 워크시트에 월간 매출이 포함된 통합 문서와 한 워크시트에 총 매출액이 포함되어 있다고 가정해 봅시다。 총 매출액을 검증해야 하며, 총 매출액이 수정되면 해당 통합 문서를 발신자에게 다시 보내 수정 사실을 알려야 합니다。

1. 판매 테이블이 포함된 워크시트에서 시트 탭을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 「코드 보기」를 클릭하세요。

2. 열리는 「Microsoft Visual Basic for Applications」 창에서 다음 VBA 코드를 시트(코드) 창에 붙여넣습니다。
VBA 코드: 지정된 셀 값이 변경되면 자동으로 이메일 보내기
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")
Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If
ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub 참고: 코드에서
이제부터 셀 B14 의 값이 변경되면 아래 스크린샷과 같이 Outlook 메시지가 자동으로 생성됩니다。

3.3 통합 문서 저장 시 자동으로 이메일 보내기
수정 후 다른 사용자와 공유해야 하는 통합 문서가 있다고 가정해 봅시다。 일반적으로 통합 문서를 저장한 후 이메일 클라이언트를 실행하고 이 통합 문서를 첨부한 새 이메일을 생성한 다음 해당 필드를 작성하여 이메일을 보내야 합니다。 이 섹션에서는 통합 문서를 저장할 때마다 자동으로 이메일을 생성하는 방법을 안내합니다。 다음 단계를 따르세요。
1. 「Alt」 + “F11" 키를 눌러 「Microsoft Visual Basic for Applications」 창을 엽니다。
2. 이 창에서 「프로젝트」 패널의 「ThisWorkbook」을 두 번 클릭한 후 다음 VBA 코드를 「ThisWorkbook(코드)」 창에 붙여넣습니다。

VBA 코드: 통합 문서 저장 시 자동으로 이메일 보내기
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
Dim xOutApp As Object
Dim xMailItem As Object
Dim xName As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "The workbook has been updated"
.Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
.Attachments.Add xName
.Display
'.send
End With
Set xMailItem = Nothing
Set xOutApp = Nothing
End Sub 참고: 코드에서
3. 이제부터 「Ctrl」 + 「S」 키를 누르거나 「저장」 버튼을 클릭하여 통합 문서를 저장할 때마다 Outlook 이메일이 자동으로 생성됩니다。 현재 워크북이(가) 첨부파일로 첨부되고 필드가 지정된 내용으로 채워지는 것을 확인할 수 있습니다。 스크린샷 참조:

팁: 이 통합 문서를 자주 사용한다면 향후 사용을 위해 VBA 스크립트를 저장할 수 있도록 「Excel 매크로 사용 통합 문서」로 저장하는 것을 권장합니다。 단계는 다음과 같습니다。

3.4 특정 시간에 자동으로 이메일 보내기
매주 금요일 오전 9 시에 작업 할당 워크북이 포함된 이메일을 누군가에게 보내야 하고, 이 작업을 Excel 에서 수동으로 이메일 클라이언트를 조작하지 않고 자동화하고 싶다고 가정해 보겠습니다。 이 섹션에서는 이를 수행하는 방법을 안내합니다。
1. 「Alt」 + “F11" 키를 눌러 「Microsoft Visual Basic for Applications」 창을 여세요。
2. 「Microsoft Visual Basic for Applications」 창에서 「삽입(Insert)」 > 「모듈(Module)」을 차례로 클릭합니다。 그런 다음 모듈 창에 다음 VBA 코드를 붙여넣습니다。

VBA 코드1: Excel 에서 현재 워크북을 첨부 파일로 이메일로 전송하기
Sub Timer()
If Weekday(Date) = vbFriday Then
SendWorkBook
Application.OnTime TimeValue("09:00:00"), "Timer"
Else
Application.OnTime TimeValue("09:00:00"), "Timer"
End If
End Sub
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 3. 이 창에서 「프로젝트(Project)」 패널의 「ThisWorkbook」을 두 번 클릭한 후, 「ThisWorkbook (Code)」 창에 다음 VBA 코드를 붙여넣습니다。

VBA 코드 2: 특정 시간에 자동으로 이메일 전송하기
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub 참고:
4. 코드를 저장한 후 다음과 같이 워크북을 Excel 매크로 사용 워크북으로 저장합니다。

5. 저장한 매크로 사용 워크북을 열면, 설정된 날짜와 시간이 되었을 때 자동으로 이메일이 생성되거나 전송됩니다。
4. 추가 주제
이 섹션에서는 Excel 에서 이메일을 전송할 때 발생할 수 있는 기타 주제들을 정리했습니다。
4.1 Excel 에서 셀 범위를 이메일로 전송하기(VBA 스크립트 사용)
다음 스크린샷과 같이 Excel 워크시트에 월간 판매 테이블이 있고, 이 테이블을 다른 사람에게 이메일 본문 내용 또는 첨부 파일로 직접 전송해야 한다고 가정해 보겠습니다。 여기서는 이를 수행하는 두 가지 방법을 제공합니다。

4.1.1 Excel 에서 셀 범위를 이메일 본문의 일부로 전송하기
다음 VBA 코드를 실행하여 Excel 에서 셀 범위를 이메일 본문의 일부로 전송할 수 있습니다。
1. 「Alt」 + “F11" 키를 눌러 「Microsoft Visual Basic for Applications」 창을 여세요。
2. 「Microsoft Visual Basic for Applications」 창에서 「도구(Tools)」 > 「참조(References)」를 차례로 클릭합니다。 그런 다음 「References – VBAProject」 대화 상자에서 “Microsoft Outlook 16.0 Object Library“ 확인란을 선택하고 「확인(OK)」을 클릭합니다。

3. 「삽입(Insert)」 > 「모듈(Module)」을 클릭한 후, 「Module (Code)」 창에 다음 VBA 코드를 붙여넣습니다。
VBA 코드: Excel 에서 셀 범위를 이메일 본문의 일부로 전송하기
Sub SendARangeofCells()
'Updated by Extendoffice 20220809
Dim xRg As Range
Dim I, J As Long
Dim xAddress As String
Dim xMailOut As Object
Dim xOutApp As Object
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.Subject = "test"
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = RangetoHTML(xRg)
.Display
'.Send
End With
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
' The following VBA script is cited from this page:
' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function 참고: 코드에서
4. “F5" 키를 눌러 코드를 실행합니다。 표시되는 「Kutools for Excel」 대화 상자에서 이메일 본문의 일부로 전송할 셀 범위를 선택한 후 「확인(OK)」을 클릭합니다。 스크린샷 참조:

그러면 Outlook 이메일이 자동으로 생성됩니다。 워크시트에서 선택한 범위가 이메일 본문에 삽입된 것을 확인할 수 있습니다。 스크린샷 참조:

4.1.2 Excel 에서 셀 범위를 첨부 파일로 이메일 전송하기
Excel 워크시트의 셀 범위를 첨부 파일로 이메일로 전송해야 하는 경우 다음 VBA 코드를 사용해 볼 수 있습니다。
1. 「Alt」 + “F11" 키를 누르세요。
2. 열린 「Microsoft Visual Basic for Applications」 창에서 「삽입(Insert)」 > 「모듈(Module)」을 클릭합니다。 그런 다음 「Module (Code)」 창에 다음 VBA 코드를 붙여넣습니다。
VBA 코드: Excel 에서 셀 범위를 첨부 파일로 이메일 전송하기
Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Monthly sales for 2021"
.Body = "Hello, please check and read this document. "
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub 참고:
3. “F5" 키를 눌러 코드를 실행합니다。 표시되는 「Kutools for Excel」 대화 상자에서 이메일 첨부 파일로 전송할 셀 범위를 선택한 후 「확인(OK)」을 클릭합니다。 스크린샷 참조:

그러면 Outlook 이메일이 자동으로 생성됩니다。 워크시트에서 선택한 셀 범위는 Excel 통합 문서로 저장되어 메시지 창에 첨부됩니다。 스크린샷 참조:

4.2 Excel 에서 버튼을 클릭하면 이메일 전송하기
Excel 에서 명령 단추를 클릭하여 이메일 전송 매크로를 실행해야 하는 경우를 예로 들면, 워크시트의 명령 단추를 클릭하여 현재 워크북을 첨부 파일로 다른 사람에게 전송할 수 있습니다。 다음 단계에 따라 이를 수행할 수 있습니다。
1. 「개발 도구(Developer)」 > 「삽입(Insert)」 > 「명령 단추(Command Button) (ActiveX 컨트롤)」을 차례로 클릭합니다。 그런 다음 워크시트에 명령 단추를 그립니다。
팁: 이미 명령 단추가 있는 경우 이 단계는 건너뛰세요。

2. 「Alt」 + "F11" 키를 눌러 「Microsoft Visual Basic for Applications」 창을 엽니다. 창에서 「삽입(Insert)」 > 「모듈(Modue)」을 클릭한 후, 모듈(Code) 창에 Excel 에서 현재 워크북을 첨부 파일로 이메일로 전송하는 데 사용되는 VBA 코드를 붙여넣습니다。

참고: 여기서 단계 2 에서 생성한 매크로 이름은 「SendWorkbook」입니다。
3. 「Alt」 + 「Q」 키를 눌러 「Microsoft Visual Basic for Applications」 창을 닫습니다。
4. 이제 명령 단추에 매크로를 할당해야 합니다。 명령 단추를 마우스 오른쪽 버튼으로 클릭하고 바로 가기 메뉴에서 「코드 보기(View Code)」를 선택합니다。

5. 그러면 「Microsoft Visual Basic for Applications」 창이 열리며, 「Sheet (Code)」 창에 다음 두 줄이 표시됩니다。
Private Sub CommandButton1_Click()
End Sub 
6. 명령 단추의 하위 프로시저 내부에 기존 매크로의 이름을 입력합니다。

7. 「Alt」 + 「Q」 키를 눌러 「Visual Basic Editor」를 닫은 후, 「개발 도구(Developer)」 > 「디자인 모드(Design Mode)」를 클릭하여 디자인 모드를 해제합니다。

이제 명령 단추를 클릭하여 현재 워크북이 첨부된 이메일을 전송할 수 있습니다。
4.3 지정된 이메일 계정에서 이메일 전송하기
일반적으로 Excel 에서 VBA 코드로 이메일을 시작할 때 발신자의 이메일 계정은 Outlook 의 기본 계정입니다. Outlook 에 여러 이메일 계정을 구성해 두었고, 기본 계정을 사용하는 대신 특정 계정을 통해 Excel 에서 이메일을 전송하려는 경우 다음 VBA 코드가 도움이 됩니다。
이 경우 다음 코드들이 필요합니다。
VBA 코드 1:
Dim OutlookMail As Outlook.MailItem VBA 코드 2:
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next 위 VBA 코드를 사용하는 방법은 다음과 같습니다。
이 예제에서는 Excel 에서 현재 워크북을 첨부 파일로 전송할 때 특정 이메일 계정을 지정하겠습니다。 다음 단계를 따르세요。
1. 「Alt」 + “F11" 키를 누릅니다。 「Microsoft Visual Basic for Applications」 창에서 「도구(Tools)」 > 「참조(References)」를 클릭합니다。 그런 다음 「References – VBAProject」 대화 상자에서 “Microsoft Outlook 16.0 Object Library“ 확인란을 선택하고 「확인(OK)」을 클릭합니다。

2. 「삽입(Insert)」 > 「모듈(Module)」을 클릭합니다。 그런 다음 「Module (Code)」 창에 다음 VBA 코드를 붙여넣습니다。
VBA 코드: Excel 에서 지정된 Outlook 계정을 통해 현재 워크북을 이메일 첨부 파일로 전송하기
Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 3. “F5" 키를 눌러 코드를 실행합니다。 그러면 Outlook 이메일 메시지가 나타나며, 코드에서 지정한 이메일 계정이 「보낸 사람(From)」 필드에 자동으로 입력된 것을 확인할 수 있습니다。
4.4 날짜 도달 시 이메일 전송하기
특정 마감일에 따라 이메일을 전송해야 하는 경우를 예로 들면, 다음 스크린샷과 같이 프로젝트 테이블이 있으며, 「범위 E2:E7의 마감일이 오늘로부터 7일 이내(현재 날짜를 2022/8/4라고 가정)일 경우」, 해당 프로젝트 리더들에게 자동으로 이메일이 전송되어 프로젝트 만료 임박을 알립니다。

1. 프로젝트 테이블이 포함된 워크시트에서 시트 탭을 마우스 오른쪽 버튼으로 클릭하고 바로 가기 메뉴에서 「코드 보기(View code)」를 클릭합니다。

2. 열린 「Microsoft Visual Basic for Applications」 창에서 다음 VBA 코드를 「시트(코드)」 창에 붙여넣으세요。
VBA 코드: 마감일 조건이 충족되면 자동으로 이메일 전송하기
Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "
"
xMailBody = ""
xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub 참고: 코드에서
3. “F5" 키를 눌러 코드를 실행합니다。 그러면 마감일이 조건과 일치할 경우 해당 이메일이 생성됩니다。 이 예시에서는 아래 스크린샷과 같이 두 개의 이메일이 생성됩니다。

5. Excel 에서 쉽게 이메일을 전송할 수 있도록 도와주는 유용한 도구
VBA 초보자라면 위 방법들을 적용하기 어려울 수 있습니다。 여기서는 「Kutools for Excel」의이메일 전송(Send Emails)기능을 추천합니다. 이 기능을 사용하면 몇 번의 클릭만으로 Excel 에서 쉽게 이메일을 전송할 수 있습니다。 다음 단계를 따르세요。
5.1 필요한 이메일 필드를 포함하는 이메일 목록을 쉽게 생성하세요
이메일 전송(Send Emails) 기능을 적용하기 전에 필요한 이메일 필드를 포함하는 이메일 목록을 먼저 생성해야 합니다。 여기서 메일링 목록 생성 기능이 도움이 됩니다。
1. 「Kutools 플러스」 > 「메일링 목록 생성」을 클릭합니다。

2. 열리는 「메일링 목록 생성」 창에서 다음 단계에 따라 설정합니다。

그러면 아래 스크린샷과 같이 샘플 이메일 목록 테이블이 생성됩니다。

3. 이제 샘플에 있는 원본 데이터를 사용자 고유의 필드 데이터로 교체해야 합니다。

이제 이메일 목록 테이블을 생성했습니다. 계속해서 「이메일 전송(Send Emails)」 기능을 적용하여 생성한 필드를 기반으로 Excel 에서 이메일을 전송하세요。
Kutools for Excel– Excel 을 300 개 이상의 필수 도구로 강력하게 개선하여 작업을 더 빠르고 쉽게 처리하고, 스마트한 데이터 처리와 생산성을 위한 AI 기능을 활용하세요。지금 받기
5.2 이메일 목록에서 생성한 필드를 포함하여 이메일을 쉽게 보낼 수 있습니다。
이메일 목록를 생성한 후()방법을 알아보려면 클릭하세요) 이메일에 필요할 수 있는 필드를 포함하고 있으므로 이제 Excel 에서 이러한 필드를 사용해 이메일을 보낼 수 있습니다。
1. 전체 이메일 목록를 선택하고 「Kutools 플러스」 > 「이메일 보내기」를 클릭합니다。

2. 「이메일 보내기」 대화 상자에서 다음 설정을 수행하세요。

3. 그러면 몇 개의 이메일이 전송되었는지 알려주는 「Kutools for Excel」 대화 상자가 나타납니다。 「확인」 버튼을 클릭하여 이 대화 상자를 닫으세요。
팁: Outlook 의 「보낸 편지함」 폴더로 이동하여 보낸 이메일을 확인할 수 있습니다。

5.3 하이퍼링크, 이미지 등을 포함한 HTML 본문으로 이메일을 쉽게 보냅니다。
이 이메일 보내기 기능을 사용하면 하이퍼링크, 이미지, 다양한 글꼴 크기 및 글꼴 색 등을 포함한 HTML 이메일을 작성할 수 있습니다。
이메일에 필요한 필드를 포함하는 이메일 목록를 생성한 후,「이메일 보내기」 대화 상자를 설정할 때툴바의 옵션을 사용하여 본문 내용을 풍부하게 만들 수 있습니다。
아래 스크린샷을 참조하세요:

5.4 이메일 전송 시 Outlook 기본 서명을 쉽게 삽입합니다。
앞서 설명한 방법에서는 Outlook 기본 서명과 함께 이메일을 보내기 위해 VBA 코드를 사용했습니다. 하지만 이 이메일 보내기 기능을 사용하면 옵션 하나만 선택하면 Excel 에서 보낸 이메일에 자동으로 Outlook 기본 서명이 삽입됩니다。
이메일에 필요한 필드를 포함하는 이메일 목록를 생성한 후 「이메일 보내기」 대화 상자를 설정할 때 「옵션」 > 「Outlook 서명 설정 사용」을 클릭해야 합니다。
참고: 「Outlook 서명 설정 사용」 옵션 앞에 체크 표시가 나타나 있는지 확인하세요。

수신자는 이메일을 받았을 때 이메일 본문 끝부분에 Outlook 기본 서명이 표시되는 것을 확인할 수 있습니다。
5.5 특정 이메일 계정에서 이메일을 쉽게 보냅니다。
Excel 에서 기본 계정을 사용하지 않고 특정 이메일 계정을 통해 이메일을 보내려면 이 이메일 보내기 기능을 활용하면 쉽게 해결할 수 있습니다。
이메일에 필요한 필드를 포함하는 이메일 목록를 생성한 후 「이메일 보내기」 대화 상자를 설정할 때 「옵션」 > 「보낸 사람」을 클릭한 다음 이메일을 보내려는 계정을 선택하세요。
참고: 이메일 계정을 선택하면 해당 항목 앞에 체크 표시가 나타납니다。

이 이메일 보내기 기능에 대해 더 알아보려면 여기를 클릭하세요。
Kutools for Excel– Excel 을 300 개 이상의 필수 도구로 강력하게 개선하여 작업을 더 빠르고 쉽게 처리하고, 스마트한 데이터 처리와 생산성을 위한 AI 기능을 활용하세요。지금 받기
결론적으로 Excel 에서 이메일을 보내는 것은 일상 업무에 매우 유용합니다. 본 문서에서는 Excel 에서 이메일을 보내는 보다 포괄적인 주제를 다루었으며, 다른 주제나 더 쉬운 해결 방법이 있다면 댓글로 알려주시기 바랍니다。
최고의 Office 생산성 도구
| 🤖 | KUTOOLS AI 도우미: 다음을 기반으로 데이터 분석 혁신하기:지능형 실행 | 코드 생성| 사용자 지정 수식 생성 | 데이터 분석 및 차트 생성| 향상된 함수 호출… |
| 인기 기능:찾기, 강조 표시 또는 중복 표시 | 빈 행 삭제 | 데이터 손실 없이 열 결합 또는 셀 제거 | 공식을 사용하지 않는 반올림... | |
| 슈퍼 LOOKUP:다중 조건 VLookup | 다중 값 VLookup | 여러 시트에서 VLookup | 퍼지 매치.... | |
| 고급 드롭다운 목록:드롭다운 목록 빠르게 생성 | 종속형 드롭다운 목록 | 다중 선택 드롭다운 목록.... | |
| 열 관리자:특정 수의 열 추가|열 이동|숨겨진 열의 표시 상태 전환|범위 및 열 비교... | |
| 주요 기능:그리드 포커스 | 디자인 보기 |향상된 수식 표시줄 | 워크북 및 시트 관리자 | 자원 라이브러리(자동 텍스트)| 날짜 선택기 | 워크시트 병합 | 암호화/셀 해독 | 목록으로 이메일 보내기 | 슈퍼 필터 | 특수 필터(굵은 글꼴이 있는 셀 필터링/기울임꼴/취소선。。。) 。。。 | |
| 상위 15 도구 모음:12 텍스트도구(텍스트 추가,특정 문자 삭제, ...)| 50+차트유형(간트 차트, ...)| 40+ 실용적인수식(생일을 기준으로 나이 계산, ...)| 19 삽입도구(QR 코드 삽입,경로에서 그림 삽입, ...)| 12 변환도구(단어로 변환하기,환율 변환, ...)| 7 병합 및 분할도구(고급 행 병합,셀 분할, ...)|그 외 더 많은 기능 |
Kutools for Excel 로 Excel 역량을 한 단계 업그레이드하고 전례 없는 효율성을 경험하세요。Kutools for Excel 는 생산성과 저장 시간을 향상시키는 300 개 이상의 고급 기능을 제공합니다。가장 필요한 기능을 지금 바로 확인하세요。。。
Office Tab 가 Office 에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만들어 줍니다
- Word, Excel, PowerPoint 에서 탭 기반 편집 및 읽기 기능을 활성화합니다, Publisher, Access, Visio 및 Project 에서도 사용 가능합니다。
- 새 창이 아닌 동일한 창의 새 탭에서 여러 문서를 열고 생성할 수 있습니다。
- 50% 만큼 생산성을 높이고 매일 수백 번의 마우스 클릭을 줄여줍니다!
모든 Kutools 애드인。 하나의 설치 프로그램
Kutools for Office스위트 번들은 Excel, Word, Outlook 및 PowerPoint 용 애드인과 Office Tab Pro 를 포함하며, 다양한 Office 앱을 사용하는 팀에 이상적입니다。
- 올인원 스위트— Excel, Word, Outlook 및 PowerPoint 애드인 + Office Tab Pro
- 하나의 설치 프로그램, 하나의 라이선스— 몇 분 안에 설정 완료(MSI 지원)
- 함께 사용할수록 더 효과적입니다— Office 앱 전반에서 생산성 향상
- 30 일간 모든 기능 무료 체험— 등록이나 신용카드 필요 없음
- 최고의 가성비— 개별 애드인 구매 대비 절약