Page 1 of 1
เรียนสอบถามการสร้างปุ่มเพื่อส่งอีเมล์หลายๆคนในเมล์เดียว และปัญหา Code Error จากการส่งอีเมล์แบบหลายคน
Posted: Mon Mar 29, 2021 4:09 pm
by GobWeravong
เรียนทุกท่านที่เคารพครับ เนื่องจากผมได้นำไฟล์การส่งอีเมล์ตามโพสในกลุ่มนี้มาศึกษาและดัดแปลงเพื่อมาประยุกต์ใช้งานในการส่งอีเมล์ ซึ่งกรณีที่ส่งอีเมล์ไปหาคนเดียว ปุ่มที่ได้ทำสามารถใช้งานได้ปกติ แต่พอทำปุ่มเพื่อใช้อีก Code VB ที่เป็นการส่งหลายๆคน เช่น ส่ง 3 คน ต้องส่ง ถึง 3 อีเมล์ และพอ Run แล้วขึ้น Error ครับ แต่ระบบส่งเมล์ไปได้ปกติ 3 อีเมล์ และอยากทราบวิธีในการส่งแค่อีเมล์เดียวแต่ไปถึง 3-20 คนได้ จะต้องทำอย่างไรครับ ผมแนบไฟล์ทดสอบมาด้วยครับ ขอบคุณมากๆครับ
Re: เรียนสอบถามการสร้างปุ่มเพื่อส่งอีเมล์หลายๆคนในเมล์เดียว และปัญหา Code Error จากการส่งอีเมล์แบบหลายคน
Posted: Mon Mar 29, 2021 5:57 pm
by snasui

การส่งหลายคนแสดงว่าต้องเป็นหัวเรื่องเดียวกัน ไฟล์แนบเหมือนกัน เพียงแต่ผู้รับมีหลายคน
ีควรปรับ Code จาก Loop เป็นแบบอื่น ถ้าต้อง Loop ก็เพียง Loop เพื่อจะสร้างผู้รับเป็น 1 ตัวแปร โดยตัวแปรนั้นคืออีเมลของผู้รับทุกคนครับ
ตัวอย่างการปรับ Code ครับ
Code: Select all
Sub Email2()
Dim OutlookApp As Object
Dim MItem As Object
Dim email_ As String
Dim s_email_ As String
Dim subject_ As String
Dim body_ As String
Dim rAll As Range
Dim r As Range
Dim l As Long
Dim sh As Worksheet
Set sh = Worksheets("Email")
l = sh.Range("A" & Rows.Count).End(xlUp).Row
Set rAll = sh.Range("A2:A" & l - 1)
Set OutlookApp = CreateObject("Outlook.Application")
Set MItem = OutlookApp.CreateItem(0)
With MItem
.SentOnBehalfOfName = sh.Range("b2").Value
.To = VBA.Join(Application.Transpose(rAll), ";")
.Subject = sh.Range("d2").Value
.Body = body_ & Chr(13) & sh.Range("E2") & sh.Range("F2") & Chr(13) & _
sh.Range("G2") & Chr(13) & sh.Range("H2") & Chr(13) & sh.Range("I2") & _
sh.Range("J2") & Chr(13) & sh.Range("K2") & Chr(13) & sh.Range("L2") & _
Chr(13) & sh.Range("M2") & Chr(13) & sh.Range("N2") & Chr(13) & _
sh.Range("O2") & Chr(13) & sh.Range("P2") & Chr(13) & sh.Range("Q2") & _
Chr(13) & sh.Range("R2") & Chr(13) & sh.Range("S2") & Chr(13) & _
sh.Range("T2") & Chr(13) & sh.Range("U2") & Chr(13) & sh.Range("V2") & _
Chr(13) & sh.Range("W2") & Chr(13) & sh.Range("X2") & Chr(13) & _
sh.Range("Y2") & Chr(13) & sh.Range("Z2")
.send
End With
OutlookApp = Nothing
MItem = Nothing
End Sub
Re: เรียนสอบถามการสร้างปุ่มเพื่อส่งอีเมล์หลายๆคนในเมล์เดียว และปัญหา Code Error จากการส่งอีเมล์แบบหลายคน
Posted: Mon Mar 29, 2021 9:10 pm
by GobWeravong
เรียน คุณ Snasui จากการนำ Code ที่คุณ Snasui แนะนำ สามารถใช้งานได้ครับ
แต่ติดที่ 2 Code นี้ครับ ที่ Run แล้วมีการเตือน และส่งอีเมล์ผ่านครับ ดังนั้นผมจึงเอาออกไป และเมื่อกดทดสอบส่งเมล์อีกครั้ง ก็สามารถ Run ผ่านและก็ส่งอีเมล์ได้ปกติครับ จึงไม่แน่ใจว่า 2 Code นี้ไว้ทำอะไรครับ
'OutlookApp = Nothing
'MItem = Nothing
ขอบพระคุณเป็นอย่างสูงครับ
Re: เรียนสอบถามการสร้างปุ่มเพื่อส่งอีเมล์หลายๆคนในเมล์เดียว และปัญหา Code Error จากการส่งอีเมล์แบบหลายคน
Posted: Mon Mar 29, 2021 9:27 pm
by snasui

สองบรรทัดนั้นเอาไว้คืน Memory ให้กับระบบ จะต้องมีคำว่า
set นำหน้าด้วย คือเขียนเป็น
Code: Select all
Set OutlookApp = Nothing
Set MItem = Nothing
จึงจะใช้ได้ครับ