:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#21

Post by snasui »

:D หากคีย์เข้าไปเองแล้วสามารถส่งได้ Code นั้นก็ควรจะส่งได้เช่นกันเพราะเป็นการให้โปรแกรมเติมค่าไฟล์ที่กำลังใช้งานให้เองแทนการคีย์

การที่ฟ้องเช่นนั้นแสดงว่ามีการเปิดใช้โดยโปรแกรมอื่นอยู่ครับ ที่แจ้งว่าคีย์เข้าไปเองนั้นเป็นการคีย์ค่าไฟล์ที่กำลังเปิดใช้งานปัจจุบันที่เก็บ Code นี้ไว้ใช่หรือไม่ หากใช่และส่งได้ ลองแนบไฟล์นั้นมา จะได้ช่วยดูต่อไปจากนั้นครับ
nutpochan
Member
Member
Posts: 99
Joined: Mon Mar 03, 2014 8:24 am

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#22

Post by nutpochan »

ใช่ครับตอนที่คีร์เข้าไปเองก็เปิดไฟล์นั้นอยู่แท้ๆยังส่งได้ทั้งที่เปิดอยู่ แต่ตอนเขียนให้ไปอ้างอิงจากเซลดันฟ้องขึ้นมาซะงั้น
แนบไฟล์มาให้แล้วนะครับ
Attachments
Booking SRR (1) ส่งวันที่ 4 ธ.ค. 58.xlsm
(28.47 KiB) Downloaded 13 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#23

Post by snasui »

:D CDO ไม่สามารถส่งไฟล์ที่เปิดอยู่ได้ครับ ดังนั้นที่แจ้งว่าคีย์เข้าไปเองและส่งได้นั้นน่าจะเข้าใจคลาดเคลื่อน

การส่งไฟล์แนบด้วย CDO ต้อง SaveAs ให้เป็นไฟล์ชื่ออื่นเสียก่อนแล้วค่อยแนบไฟล์นั้นไป เมื่อแนบแล้วค่อยลบทิ้ง

ตัวอย่าง Code ตามด้านล่างครับ

ประกาศตัวแปรเพิ่ม

Code: Select all

Dim wb As Workbook
Dim fileExtension As String
Dim tempPath As String
Dim tempName As String
กำหนดค่า

Code: Select all

Set wb = ThisWorkbook
fileExtension = VBA.Mid(wb.Name, InStr(1, wb.Name, ".xl"))
tempPath = VBA.Environ$("temp") & "\"
tempName = Replace(wb.Name, fileExtension, "") & " " & VBA.Format(Now, "dd-mmm-yy h-mm-ss")
wb.SaveCopyAs tempPath & tempName & fileExtension
แนบไฟล์

Code: Select all

objMsg.AddAttachment tempPath & tempName & fileExtension
ลบไฟล์ที่สร้างไว้ชั่วคราวทิ้ง

Code: Select all

Kill tempPath & tempName & fileExtension
nutpochan
Member
Member
Posts: 99
Joined: Mon Mar 03, 2014 8:24 am

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#24

Post by nutpochan »

ใช้ได้ผลแล้วครับ ขอบคุณครับ
nutpochan
Member
Member
Posts: 99
Joined: Mon Mar 03, 2014 8:24 am

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#25

Post by nutpochan »

จากโค๊ดดังกล่าว ถ้าผมต้องการส่งไปหลายๆ เมลโดยที่มีlist mailใว้ที่ช้อง w1ถึงw10 ผมจะต้องแก้ไขสูตรเป็นอย่างไรครับ
nutpochan
Member
Member
Posts: 99
Joined: Mon Mar 03, 2014 8:24 am

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#26

Post by nutpochan »

แนบโค๊ดมาให้อกทีนะครับ

Code: Select all

Sub Macro1()
' Object creation
Set objMsg = CreateObject("CDO.Message")
Set msgConf = CreateObject("CDO.Configuration")
  
' กำหนด Server Configuration
msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "nutpochan1@gmail.com"
msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "**********"
msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
msgConf.Fields.Update
'ประกาศตัวแปร
 Dim wb As Workbook
Dim fileExtension As String
Dim tempPath As String
Dim tempName As String

  'กำหนดค่า
  Set wb = ThisWorkbook
fileExtension = VBA.Mid(wb.Name, InStr(1, wb.Name, ".xl"))
tempPath = VBA.Environ$("temp") & "\"
tempName = Replace(wb.Name, fileExtension, "") & " " & VBA.Format(Now, "dd-mmm-yy h-mm-ss")
'Saveไฟล์
wb.SaveCopyAs tempPath & tempName & fileExtension


' ส่ง Email

objMsg.To = "nutpochan1@gmail.com"
objMsg.From = "nutpochan1@gmail.com"
objMsg.bodypart.Charset = "utf-8"
objMsg.Subject = Cells(1, 18).Value
objMsg.HTMLBody = Cells(2, 18).Value
objMsg.Sender = "weerfdgsdfg"
objMsg.AddAttachment tempPath & tempName & fileExtension
Set objMsg.Configuration = msgConf

'ลบไฟล์ทิ้งต้องเอาไว้หลัง คำสั่งแนบไฟล์
  Kill tempPath & tempName & fileExtension
' Send
objMsg.Send
  
' Clear
Set objMsg = Nothing
Set msgConf = Nothing
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#27

Post by snasui »

nutpochan wrote:จากโค๊ดดังกล่าว ถ้าผมต้องการส่งไปหลายๆ เมลโดยที่มีlist mailใว้ที่ช้อง w1ถึงw10 ผมจะต้องแก้ไขสูตรเป็นอย่างไรครับ
:D กำหนดหนดตัวแปรเช่น strEmail แล้วใช้การ Loop โดยนำทุกค่าในเซลล์เหล่านั้นมาเชื่อมต่อกันเป็นตัวแปร strEmail จากนั้นค่อยกำหนด objMsg.To เป็น objMsg.To = strEmail ลองเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ
nutpochan
Member
Member
Posts: 99
Joined: Mon Mar 03, 2014 8:24 am

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#28

Post by nutpochan »

นอกจากนั้นแล้ว ในข้อความ ผมต้องการให้มีการแทรก hyperlink ยกตัวอย่างเช่น ถ้าผมพิม www.google.com ผู้อ่านจะเห็นเป็นข้อความแต่ไม่สามารถกด ได้ ผมต้องแก้โค๊ดยังไงให้ ผู้อ่านสามารถกดlink คำว่า www.google.comได้ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#29

Post by snasui »

:D หากเป็น VBA ต้องปรับมาเองก่อนในทุกเรื่องที่ต้องการ ติดตรงไหนแล้วค่อยมาถามกันครับ
nutpochan
Member
Member
Posts: 99
Joined: Mon Mar 03, 2014 8:24 am

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#30

Post by nutpochan »

Code: Select all

objMsg.HTMLBody = Range("w2") & "<br>" & "<a href=range(q1)>"
ผมมพยายาม ปรับตามโค๊ดดังกล่าวแล้วแต่ ยังไม่ขึ้นครับ ไม่รู้ต้องแก้ตรงไหน ซึ่ง ในช่อง q1 นั้นจะเป็นคำว่า http://www.google.com
nutpochan
Member
Member
Posts: 99
Joined: Mon Mar 03, 2014 8:24 am

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#31

Post by nutpochan »

เคยหาเจอจาก เว็บ http://answers.microsoft.com/en-us/offi ... aa4?auth=1 แต่ไม่สามารถปรับตามเข้าได้
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ผมพยายามใช้ vba ส่ง hotmail แต่ล้มเหลวครับ

#32

Post by snasui »

:D ตัวอย่าง Code ครับ

objMsg.HTMLBody = Range("w2") & "<br>" & "<a href=" & Range("q1").Value & ">" & Range("q1").Value & "</a>"
Post Reply