: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 แต่ล้มเหลวครับ

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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

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

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

#32

by snasui » Tue Jan 12, 2016 9:11 pm

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

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

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

#31

by nutpochan » Tue Jan 12, 2016 9:00 pm

เคยหาเจอจาก เว็บ http://answers.microsoft.com/en-us/offi ... aa4?auth=1 แต่ไม่สามารถปรับตามเข้าได้

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

#30

by nutpochan » Tue Jan 12, 2016 8:58 pm

Code: Select all

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

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

#29

by snasui » Tue Jan 12, 2016 8:33 pm

:D หากเป็น VBA ต้องปรับมาเองก่อนในทุกเรื่องที่ต้องการ ติดตรงไหนแล้วค่อยมาถามกันครับ

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

#28

by nutpochan » Tue Jan 12, 2016 8:29 pm

นอกจากนั้นแล้ว ในข้อความ ผมต้องการให้มีการแทรก hyperlink ยกตัวอย่างเช่น ถ้าผมพิม www.google.com ผู้อ่านจะเห็นเป็นข้อความแต่ไม่สามารถกด ได้ ผมต้องแก้โค๊ดยังไงให้ ผู้อ่านสามารถกดlink คำว่า www.google.comได้ครับ

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

#27

by snasui » Tue Jan 12, 2016 6:10 pm

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

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

#26

by nutpochan » Tue Jan 12, 2016 12:25 pm

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

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

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

#25

by nutpochan » Tue Jan 12, 2016 12:05 pm

จากโค๊ดดังกล่าว ถ้าผมต้องการส่งไปหลายๆ เมลโดยที่มีlist mailใว้ที่ช้อง w1ถึงw10 ผมจะต้องแก้ไขสูตรเป็นอย่างไรครับ

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

#24

by nutpochan » Sun Dec 06, 2015 10:07 pm

ใช้ได้ผลแล้วครับ ขอบคุณครับ

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

#23

by snasui » Sun Dec 06, 2015 9:33 pm

: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

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

#22

by nutpochan » Sun Dec 06, 2015 8:31 pm

ใช่ครับตอนที่คีร์เข้าไปเองก็เปิดไฟล์นั้นอยู่แท้ๆยังส่งได้ทั้งที่เปิดอยู่ แต่ตอนเขียนให้ไปอ้างอิงจากเซลดันฟ้องขึ้นมาซะงั้น
แนบไฟล์มาให้แล้วนะครับ
Attachments
Booking SRR (1) ส่งวันที่ 4 ธ.ค. 58.xlsm
(28.47 KiB) Downloaded 14 times

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

#21

by snasui » Sun Dec 06, 2015 7:16 pm

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

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

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

#20

by nutpochan » Sun Dec 06, 2015 6:03 pm

แก้แล้ว debug ดังไฟล์แนบครับ
Attachments
Untitled.png
Untitled.png (13.44 KiB) Viewed 319 times

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

#19

by snasui » Sun Dec 06, 2015 5:00 pm

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

จาก objMsg.AddAttachment "C:\Users\โฮม\Desktop\dfdfงาน1.xlsm" เป็น objMsg.AddAttachment activeworkbook.Path &"\" & activeworkbook.name

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

#18

by nutpochan » Sun Dec 06, 2015 4:20 pm

จากโค๊ดที่แนบมา ถ้าเราอยากให้แนบไฟล์ซึ่งผมเขียนเป็น "C:\Users\โฮม\Desktop\dfdfงาน1.xlsm" แต่ทีนี้ผมอยากให้แนบไฟล์ที่เป็น workbook ปัจจุบันที่ผมใช้งานอยู่ ผมต้องแก้โค๊ดเป็นยังไงครับ โดยเราไม่ต้องมานั่งพิมที่อยู่โค๊ดที่อยู่ไฟล์ใหม่ทุกวัน โดยให้มันอ่านที่อยู่ไฟล์เอง

Code: Select all

' 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
  'send mutiplier email
 
' Email

objMsg.To = "nutpochan1@gmail.com,nutpochan@hotmail.com"
objMsg.From = "nutpochan1@gmail.com"
objMsg.bodypart.Charset = "utf-8"
objMsg.Subject = Cells(1, 1).Value
objMsg.HTMLBody = Cells(2, 1).Value
objMsg.Sender = "weerfdgsdfg"
objMsg.AddAttachment "C:\Users\โฮม\Desktop\dfdfงาน1.xlsm"
Set objMsg.Configuration = msgConf
  
' Send
objMsg.Send
  
' Clear
Set objMsg = Nothing
Set msgConf = Nothing

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

#17

by nutpochan » Sat Dec 05, 2015 11:48 pm

อั๊ยยะ ดีใจมากรู้วิธีแก้แล้วครับ แชร์ให้คนที่ไม่รู้
ให้เครดิตกระทู้นี้หน่อยเป็นประโยชน์มาก https://community.qlik.com/thread/25067

คือว่าพ้อยมันอยู่ที่ถ้าโค๊ดเขียนถูกทุกอย่าง แต่ในบัญชีผู้ใช้ไม่อนุญาติแอปที่มีความปลอดภัยน้อย ก็ส่งไม่ได้ก็เด้ง

ดังนั้นเหมือนเขียนโค็ดถูกแล้วใคร มีปัญญา โค๊ด eror แบบนี้
The message could not be sent to the SMTP server. The transport error code was 0x80040217. The server response was not available

อย่าลืมไปตั้งค่าเปิดที่ https://www.google.com/settings/security/lesssecureapps นะครับ

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

#16

by snasui » Sat Dec 05, 2015 5:43 pm

:D ดูตัวอย่างการใช้งานที่ผมโพสต์ไปด้านบน

ของ Ron จะบอกไว้ชัดเจนแล้วว่าตรงไหนต้องเปลี่ยนหรือไม่เปลี่ยนครับ

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

#15

by nutpochan » Sat Dec 05, 2015 5:40 pm

ตรงที่ บทความของ ron

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

"CDO.Message" จะใส่เป็น email ของเรา หรือไม่ต้องเปลี่ยน

"CDO.Configuration" จะใส่เป็น password ของเราหรือไม่ต้องเปลี่ยนครับ

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

#14

by snasui » Sat Dec 05, 2015 5:33 pm

:D ผมใช้ Excel 2010, 2013, 2016

เท่าที่จำได้น่าจะเป็น Version 2013 และไม่จำเป็นต้องใช้ Outlook ครับ

ด้านล่างเป็นตัวอย่างสำหรับการส่งอีเมลผ่าน Gmail ผม Run ด้วย Excel 2010 แล้วพบว่าสามารถทำงานได้ปกติครับ

Code: Select all

Sub CDO_Mail_With_Gmail()
    Dim iMsg As Object
    Dim iConf As Object
    Dim strbody As String
    Dim Flds As Variant
    Const gmailUser As String = "YourEmail" '1
    Const gmailPassword As String = "YourPassword" '2
    Const strUrl = "http://schemas.microsoft.com/cdo/configuration/"
    
    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")

    iConf.Load -1
    Set Flds = iConf.Fields
    With Flds
        .Item(strUrl & "smtpusessl") = True
        .Item(strUrl & "smtpauthenticate") = 1
        .Item(strUrl & "sendusername") = gmailUser
        .Item(strUrl & "sendpassword") = gmailPassword
        .Item(strUrl & "smtpserver") = "smtp.gmail.com"
        .Item(strUrl & "sendusing") = 2
        .Item(strUrl & "smtpserverport") = 465
        .Update
    End With

    strbody = "Hello"

    With iMsg
        Set .Configuration = iConf
        .To = "EmailAddressOfRecipient" '3
        .CC = ""
        .BCC = ""
        .From = """YourName"" <YourEmail>" '4
        .Subject = "Important message"
        .TextBody = strbody
        .Send
    End With

End Sub

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

#13

by nutpochan » Sat Dec 05, 2015 4:45 pm

อาจารย์ใช้ excell 2000 อะไรตอรรันหรอครับ

ก่อนผมรันผมต้องเข้า microsoft outlookก่อนไหม

Top