VBA를 사용하여 엑셀로 생성된 급여명세서를 이메일로 자동 발송하는 방법은 Outlook 애플리케이션을 활용하는 것입니다. 이를 위해서는 Outlook이 설치되어 있고 메일 설정이 완료되어 있어야 합니다.
주요 단계는 다음과 같습니다.
CreateObject("Outlook.Application")를 사용하여 Outlook 애플리케이션 개체를 생성합니다.MyOutlook.CreateItem(olMailItem)을 통해 새로운 메일 항목을 생성합니다..To (수신자), .Subject (제목), .Body (본문) 등의 속성을 설정합니다. 급여명세서의 경우, 각 직원에게 맞는 수신자 정보와 제목, 본문 내용을 동적으로 설정해야 합니다..Attachments.Add 메서드를 사용하여 생성된 급여명세서 파일(예: PDF 또는 Excel 파일)을 첨부합니다..Send 메서드를 호출하여 메일을 발송합니다. (테스트 시에는 .Display를 사용하여 발송 전 메일 내용을 확인하는 것이 좋습니다.)구현 시 고려사항:
이러한 기능을 구현하기 위한 VBA 코드 예시는 다음과 같습니다:
Sub SendPayStubEmails()
Dim OutApp As Object
Dim OutMail As Object
Dim wsData As Worksheet
Dim wsTemplate As Worksheet
Dim lastRow As Long
Dim i As Long
Dim recipientEmail As String
Dim subject As String
Dim body As String
Dim attachmentPath As String
' Outlook 애플리케이션 설정
On Error Resume Next
Set OutApp = GetObject(, "Outlook.Application")
If OutApp Is Nothing Then
Set OutApp = CreateObject("Outlook.Application")
End If
On Error GoTo 0
Set wsData = ThisWorkbook.Sheets("급여대장") ' 데이터가 있는 시트
Set wsTemplate = ThisWorkbook.Sheets("급여명세서템플릿") ' 명세서 템플릿 시트
lastRow = wsData.Cells(Rows.Count, "A").End(xlUp).Row ' 데이터 마지막 행
For i = 2 To lastRow ' 2행부터 시작 (헤더 제외)
recipientEmail = wsData.Cells(i, "B").Value ' B열에 이메일 주소 있다고 가정
subject = "[급여명세서] " & wsData.Cells(i, "A").Value & "님의 " & Format(Date, "yyyy년 mm월") & " 급여 안내"
body = wsData.Cells(i, "A").Value & "님께,
" & Format(Date, "yyyy년 mm월") & " 급여명세서를 첨부와 같이 보내드립니다.
감사합니다."
attachmentPath = wsData.Cells(i, "C").Value ' C열에 명세서 파일 경로 있다고 가정
' 메일 항목 생성
Set OutMail = OutApp.CreateItem(0) ' olMailItem = 0
With OutMail
.To = recipientEmail
.Subject = subject
.Body = body
If Dir(attachmentPath) <> "" Then ' 파일이 존재하는 경우
.Attachments.Add attachmentPath
Else
MsgBox "첨부 파일이 존재하지 않습니다: " & attachmentPath, vbExclamation
End If
.Send ' 실제 발송
' .Display ' 테스트 시 발송 전 확인용
End With
Set OutMail = Nothing ' 다음 루프를 위해 초기화
Application.Wait (Now + TimeValue("0:00:01")) ' 메일 발송 간격 (필요시 조절)
Next i
MsgBox "모든 급여명세서 이메일 발송이 완료되었습니다.", vbInformation
Set OutApp = Nothing
End Sub
위 코드는 예시이며, 실제 사용 시에는 시트 이름, 열 번호, 파일 경로 등을 사용자의 환경에 맞게 수정해야 합니다.
출처:
