반응형

실무 자동화 (12편): 클릭 한 번으로 "거래처별 대량 메일 자동 발송" (Outlook 연동)

 

안녕하세요, 물류 현장의 지루한 반복 작업을 코딩으로 박멸하는 '칵칵'입니다. ☕

매일 오후, 수십 곳의 거래처에 각각 다른 명세서나 안내 메일을 보내고 계신가요? 엑셀 리스트를 보고 Outlook을 열어 주소 복사, 제목 입력, 본문 수정... 이 과정을 50번 반복하다 보면 어느새 퇴근 시간은 저 멀리 사라지죠. 오늘은 버튼 클릭 한 번으로 수백 통의 메일을 순식간에 쏘아 올리는 VBA 마법을 공유합니다.

🛠 Outlook 메일 자동 발송 VBA 코드

Sub SendBulkEmails()
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim i As Long, lastRow As Long
    
    Set OutlookApp = CreateObject("Outlook.Application")
    
    ' 1. 현재 시트의 데이터 마지막 줄 찾기
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    ' 2. 반복문 실행 (2행부터 마지막행까지)
    For i = 2 To lastRow
        Set OutlookMail = OutlookApp.CreateItem(0)
        
        With OutlookMail
            .To = Cells(i, 2).Value ' B열: 수신자 주소
            .Subject = Cells(i, 3).Value ' C열: 메일 제목
            .Body = Cells(i, 4).Value ' D열: 메일 본문
            
            ' .Attachments.Add "C:\파일경로\첨부파일.pdf" ' 첨부파일 필요 시 주석 해제
            
            .Display ' 3. 메일창 띄우기 (즉시 발송하려면 .Send 로 변경)
        End With
        
        Set OutlookMail = Nothing
    Next i
    
    MsgBox "모든 메일 작성이 완료되었습니다! 확인 후 발송하세요."
End Sub

💡 코드 핵심 해설 (실무 포인트)

  • CreateObject("Outlook.Application"): 엑셀에서 Outlook 프로그램을 강제로 제어할 수 있게 연결해 주는 명령입니다.
  • .To / .Subject / .Body: 엑셀의 각 열에 입력된 정보를 메일의 수신자, 제목, 내용으로 정확히 매칭합니다.
  • .Display vs .Send: 처음에는 .Display를 써서 메일이 잘 만들어졌는지 눈으로 확인하세요. 완벽하다면 .Send로 바꿔서 클릭 한 번에 전송까지 끝낼 수 있습니다.

⚠️ 칵칵의 포인트 해설: 여기서 실수하면 큰일 납니다!

  • 실수 1: Outlook 실행 상태 - 이 매크로를 돌리기 전, 반드시 Outlook 프로그램이 켜져 있어야 합니다. 안 그러면 런타임 오류가 발생합니다.
  • 실수 2: 보안 경고창 - 외부 프로그램이 메일을 보내려 할 때 보안 알림이 뜰 수 있습니다. 회사 보안 설정에 따라 확인 버튼을 수동으로 눌러야 할 수도 있습니다.
  • 실수 3: 잘못된 주소 형식 - 이메일 주소에 @가 빠지거나 오타가 있으면 매크로가 중간에 멈춥니다. 실행 전 **[공백 제거]**와 주소 체크는 필수입니다!
  • 실수 4: 대량 발송의 위험 - 수백 통을 1초 만에 .Send로 보내면 스팸 서버로 오인받아 계정이 차단될 수 있습니다. 20~30통 단위로 끊어서 발송하는 것을 권장합니다.

 

#엑셀VBA #Outlook자동화 #이메일발송매크로 #업무자동화 #칼퇴꿀팁 #물류관리 #VBA강좌 #직장인코딩 #데이터정리 #엑셀꿀팁 #칵칵 #자동화코드 #메일대량발송 #엑셀초보탈출

다음 엑셀 이야기 예고: 「엑셀 VBA (12편): 조건에 맞는 데이터만 PDF로 변환하여 자동 저장하기」

반응형

+ Recent posts