Page 1 of 1

มีปัญหาเรื่องการส่ง Mail จาก Excel Vba ครับ ใน Excel 2003

Posted: Wed Apr 04, 2012 3:16 pm
by songsug
อาจารย์และผู้รู้โปรดชี้แนะครับ ผมลองใน 2007 แล้วมันไม่ติดครับ
พอดีว่าที่บริษัทผมเกี่ยวกับการเซ็นเอกสารบางอย่างเรานำระบบฐานข้อมูล Sql เข้ามาใช้เชื่อมต่อกับ Excel โดยใช้ Excel เป็นหน้ากากของโปรแกรม โดยเอกสารต่างๆเราจะเปิดเข้าระบบผ่านฟอร์มที่เราทำบน Excel แต่ติดปัญหาเวลาที่กดปุ่มส่ง Mail แจ้งเช่น ตอนเปิดเอกสาร หรือตอนเซ็นเอกสารแล้วมันจะมีกล่องข้อความขึ้นมาแ้จ้งเตือน ซึ่งผมหาข้อมูลในส่วนนี้แล้วจะคล้่ายๆกับการเตื่อนในด้านของความปลอดภัย แต่เจ้าตัวนี้ทำให้ติดปัญหาเวลาใช้งาน User บางคน กด NO Mail มันก้จะไม่ส่งออกไปครับ ทำให้แผนกเอกสารไม่ทราบว่ามีการเปิดเอกสาร หรือมีการเซ็นเอกสารเกิดขึ้นผมจึงอยากรบกวนสอบถาม อาจารย์และผู้รู้ว่าใน Version 2003 นั้นเราสามารถปิดการแจ้งเตือนตามไฟลืแนบมาได้ไหมครับ เพราะตอนนี้ในบริษัทยังใช้งาน Excel 2003 อยู่ เพราะถ้า Up version จะต้องไปตามแก้ไขโปรแกรมมากมายมหาศาลเลยครับ โดยเฉพาะ Object บางตัวที่เปิดใน Version ที่สูงกว่าแล้วมันจะเพี้ยน และรวมไปถึง Object บางตัวที่มันเก็บไว้ใน OFFICE11 เพราะถ้าเปลี่ยนเป็น 2007 มันจะกลายเป็น OFFICE12 (โทษทีครับยาวไปหน่อย กลัวไม่ละเอียด)


Code ที่ผมใช้ส่ง Mail ครับ ตัวอย่าง
-----------------------------------

Code: Select all

Dim MailClient As Object
Dim Mail As Object
Dim reply As Integer

Set MailClient = CreateObject("Outlook.Application")
Set Mail = MailClient.CreateItem(olMailitem)

Mail.Subject = "มีการเปิดเอกสาร Customer Complain โดยเครื่อง AC15"
Mail.Body = "แจ้งเตือนการเปิดเอกสารเลขที่ PR120-142-14K"

Mail.To = "IT18@regal-jewelry.com"
reply = MsgBox("ส่ง Mail แจ้งให้ทราบ ?", vbYesNo, "Question")
If iReply = vbNo Then Exit Sub
Mail.Send
Set MailClient = Nothing
Set Mail = Nothing
----------------------------------------------------------------
ผมติดปัญหาการใช้งานอยู่ 2 ตัวนี้ล่ะครับ Fixgrid กับ ส่ง mail หาวิธีแก้ไขไม่่ได้จริงๆครับ

Re: มีปัญหาเรื่องการส่ง Mail จาก Excel Vba ครับ ใน Excel 200

Posted: Wed Apr 04, 2012 3:38 pm
by tupthai
SendKeys "%{s}", True 'send the email without prompts
http://www.tek-tips.com/faqs.cfm?fid=4334

Re: มีปัญหาเรื่องการส่ง Mail จาก Excel Vba ครับ ใน Excel 200

Posted: Wed Apr 04, 2012 3:57 pm
by songsug
ผมเข้าไม่ได้ครับ Copy วางไห้ได้ไหมครับ
ข้อผิดพลาด 324 (net::ERR_EMPTY_RESPONSE): เซิร์ฟเวอร์ปิดการเชื่อมต่อโดยไม่ส่งข้อมูลใดๆ

Re: มีปัญหาเรื่องการส่ง Mail จาก Excel Vba ครับ ใน Excel 200

Posted: Wed Apr 04, 2012 4:02 pm
by tupthai

Code: Select all

Sub Mailer()
Sheets("BB Email Data").Select
pathname = [b11].value 'defines attachment
dname = [b14].value 'defines date for subject
Dim objol As New outlook.Application
Dim objmail As MailItem
Set objol = New outlook.Application
Set objmail = objol.createitem(olmailitem)
    With objmail
        .To = "whoever" 'enter in here the email address
        .cc = "whoever" 'enter in here the email address
        .Subject = "Daily test email for  " & dname
        .Body = "Please find attached the teste email" & _
            vbCrLf & "If you have any queries can you please let me know" & vbCrLf
        .NoAging = True
        .Attachments.Add pathname 'adds attachment to email
        .display
    End With
    Set objmail = Nothing
    Set objol = Nothing
    SendKeys "%{s}", True 'send the email without prompts
    
End Sub

Re: มีปัญหาเรื่องการส่ง Mail จาก Excel Vba ครับ ใน Excel 200

Posted: Wed Apr 04, 2012 4:57 pm
by songsug
ตัวนี้ต้องใช้ Object Library ของ 2007 ครับซึ่งเครื่องที่เป็น 2003 จะเข้าไป Add ไม่ได้ครับ ปกติตอน Add จะเข้าไปที่ Reference แล้วก็ Brown ครับ แต่ Code ที่คุณให้ผมมาใช้กับเครื่องที่ลง 2007 ได้ครับ T_T แต่ก็ขอบคุณสำหรับข้อมูลครับ

Re: มีปัญหาเรื่องการส่ง Mail จาก Excel Vba ครับ ใน Excel 200

Posted: Wed Apr 04, 2012 5:14 pm
by snasui
:D ได้ลองใช้ Application.DisplayAlerts = False แล้วหรือไม่ครับ

Code: Select all

Sub test()
    Application.DisplayAlerts = False
    Dim MailClient As Object
    Dim Mail As Object
    Dim reply As Integer
    
    Set MailClient = CreateObject("Outlook.Application")
    Set Mail = MailClient.CreateItem(olMailitem)
    
    Mail.Subject = "มีการเปิดเอกสาร Customer Complain โดยเครื่อง AC15"
    Mail.Body = "แจ้งเตือนการเปิดเอกสารเลขที่ PR120-142-14K"
    
    Mail.To = "IT18@regal-jewelry.com"
    reply = MsgBox("ส่ง Mail แจ้งให้ทราบ ?", vbYesNo, "Question")
    If iReply = vbNo Then Exit Sub
    Mail.Send
    Set MailClient = Nothing
    Set Mail = Nothing
    Application.DisplayAlerts = True
End Sub
Note: เครื่องผมทดสอบแล้วไม่เกิดปัญหาเนื่องจากเป็น Outlook 2010, Windows 7, Excel 2003, Excel 2010, Excel 2007

Re: มีปัญหาเรื่องการส่ง Mail จาก Excel Vba ครับ ใน Excel 200

Posted: Wed Apr 04, 2012 5:38 pm
by songsug
เครื่องผมก้ผ่านครับอาจารย์ แต่เครื่อง User อื่นๆรวมไปถึงเครื่องผู้บริหารไม่ผ่านครับ แล้ว User บางคนไปกด No ครับผมเคยลองหาแล้วในเว็บมีโปรแกรมกด Auto yes อยู่แต่ผมดูแล้วไม่เหมาะสมที่จะนำมาใช้ครับ เครื่องผมก็ลง Office 2007 แล้วก็ 2003 ผมก็ใช้ได้ครับ ปวดหัวมากเลยครับอาจารย์

Re: มีปัญหาเรื่องการส่ง Mail จาก Excel Vba ครับ ใน Excel 200

Posted: Wed Apr 04, 2012 9:44 pm
by snasui
:D ลองทดสอบ Code ของ Ron ตาม Link นี้ดูครับ Using VBA send email