Page 1 of 1

CODE VBA การส่งอีเมล์ Outlook Error

Posted: Mon Sep 13, 2021 8:11 pm
by aniwat2011
เรียนอาจารย์ และผู้รู้ทุกท่านครับ
ผมมีปัญหาเรื่อง CODE VBA การส่งอีเมล์ Outlook ครับ
ไม่รู้ว่าติดตรงไหน จะแก้อย่างไรครับ
ขอบคุณครับ

Code: Select all

Sub Send_Email_Program()
    Dim myoutlook As Outlook.Application
    Dim mitem As Outlook.MailItem
    
    Set myoutlook = New Outlook.Application

    lastrow = Sheets("Mail").Range("A" & Rows.Count).End(xlUp).Row
    
    For i = 2 To lastrow
        Set mitem = myoutlook.CreateItem(olMailItem)
            With mitem
                .To = Sheets("Mail").Range("A" & i).Value
                .CC = Sheets("Mail").Range("B" & i).Value
                .Subject = Sheets("Mail").Range("D" & i).Value
                .Body = Sheets("Mail").Range("E" & i).Value
                .Attachments.Add (Sheets("Mail").Range("F" & i).Value)
                .Send
             End With
        Next i

    MsgBox "ส่ง Email ครบทุกคนแล้ว"

End Sub
debug.gif
debug.gif (32.53 KiB) Viewed 69 times
debug2.gif
debug2.gif (36.52 KiB) Viewed 69 times

Re: CODE VBA การส่งอีเมล์ Outlook Error

Posted: Mon Sep 13, 2021 9:33 pm
by snasui
:D เมื่อใช้ Option Explicit อยู่ด้านบนของ Module หมายถึงต้องประกาศตัวแปรทุกตัวเสียก่อนที่จะใช้งานครับ

ตัวแปรที่ยังไม่ประกาศคือ lastrow และ i จึงต้องประกาศเพิ่มเป็น

Code: Select all

Option Explicit

Sub Send_Email_Program()
    Dim myoutlook As Outlook.Application
    Dim mitem As Outlook.MailItem
    Dim lastrow As Long, i As Integer
'Other code

Re: CODE VBA การส่งอีเมล์ Outlook Error

Posted: Mon Sep 13, 2021 9:50 pm
by aniwat2011
ขอบพระคุณมาก ๆ ครับอาจารย์

Re: CODE VBA การส่งอีเมล์ Outlook Error

Posted: Mon Sep 13, 2021 11:06 pm
by aniwat2011
อาจารย์ครับ เวลาเราส่งเมล์จำนวนมาก ๆ หากมีเมล์ผิด มันจะหยุด ถ้าไม่อยากให้มันหยุด โดยให้มันข้ามไปเลยได้ไหมครับ จะต้องเพิ่มอะไรครับผม

Re: CODE VBA การส่งอีเมล์ Outlook Error

Posted: Mon Sep 13, 2021 11:15 pm
by aniwat2011
มันขึ้นแบบนี้ครับอาจารย์
และไม่รู้ว่าเมล์ของใครผิดครับ
error5.gif
error5.gif (21.82 KiB) Viewed 57 times

Re: CODE VBA การส่งอีเมล์ Outlook Error

Posted: Tue Sep 14, 2021 5:45 am
by aniwat2011
และอยากให้มีช่อง Status ว่าส่งแล้วได้ไหมครับอาจารย์

Re: CODE VBA การส่งอีเมล์ Outlook Error

Posted: Tue Sep 14, 2021 5:48 am
by snasui
:D กรณีไม่ต้องการให้แสดง Error ลองใส่

on error resume next ก่อนบรรทัด for i ... next ครับ

ส่วนการให้แสดงว่าส่งแล้วหรืออื่นใดจำเป็นต้องเขียนเองก่อน ติดแล้วค่อยถามกันต่อครับ

Re: CODE VBA การส่งอีเมล์ Outlook Error

Posted: Tue Sep 14, 2021 6:50 am
by aniwat2011
ขอบพระคุณมากครับอาจารย์

Re: CODE VBA การส่งอีเมล์ Outlook Error

Posted: Tue Sep 14, 2021 6:58 am
by aniwat2011
ลองใช้แล้วได้ผลครับอาจารย์ มันดำเนินการจนเสร็จ ไม่ขึ้น error ครับ ขอบคุณอีกครั้งครับผม

Re: CODE VBA การส่งอีเมล์ Outlook Error

Posted: Tue Sep 14, 2021 7:27 am
by aniwat2011
อาจารย์ครับ ผมกดส่งวันนี้ แล้วผมเช็คดูที่ถาดส่งปรากฏว่าไม่มีรายการส่งเลยครับ
ถาดส่ง.gif
ถาดส่ง.gif (38.69 KiB) Viewed 51 times

Re: CODE VBA การส่งอีเมล์ Outlook Error

Posted: Tue Sep 14, 2021 11:33 am
by snasui
:D อันนี้ต้องฝึก Debug ให้ทราบเองว่าเกิดจาก Code บรรทัดไหน ดูการ Loop ไปทีละค่าว่ามันมีการส่งอีเมลหรือไม่ครับ

Code ที่เขียนจะต้องติดตามได้ทุกบรรทัดว่าทำงานตามที่ต้องการหรือไม่ และการติดตามที่ว่านี้คือการ Debug

วิธีการ Debug ผมโพสต์ไว้ที่ Link นี้ https://snasui.com/viewtopic.php?f=3&t= ... 47#p103247 หากอ่านแล้วไม่เข้าใจสามารถสอบถามเพิ่มเติมมาได้

การจะช่วยดูให้ได้นอกจากแนบภาพที่แสดงปัญหาแล้วจะต้องแนบไฟล์ที่เกี่ยวข้องเพื่อให้เพื่อนสมาชิกสามารถช่วยทดสอบได้ด้วยครับ