Page 1 of 1

ต้องการแนบไฟล์ในเมลโดยอ้างข้อมูลในexcel

Posted: Sat Sep 08, 2018 8:58 pm
by prajak
Code ด้านล่างคือผมไปเจอในเวปไซด์หนึ่งและลองนำมาประยุกต์ใช้
แต่ติดที่ไม่ค่อยมีความรู้เกี่ยว กับการใช้งานกับ Outlook ที่ผ่านมาทำแต่ในExcel
ผมต้องการแนบไฟล์เอกสารซึ่งข้อมูลที่อยู่และชื่อไฟล์อยู่บรรจุอยู่ในคอลัมน์"H"
รบกวนอาจารย์แนะนำด้วยครับ
Sub SendEmailToAddressInCells()
Dim xRg As Range
Dim xRgEach As Range
Dim xRgVal As String
Dim xAddress As String
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select mail supplier", "Supplier Evaluate", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
For Each xRgEach In xRg
xRgVal = xRgEach.Value
If xRgVal Like "?*@?*.?*" Then
Set xMailOut = xOutApp.CreateItem(olMailItem)
'Dim Attach As Range
'Set Attach = Range(Cells(2, 12), Cells(Rows.Count, 12).End(xlUp)).Value
With xMailOut
.To = xRgVal
.Subject = "Evaluattion for August"
.CC = "Eva"
'.Attachments.Add (Attach)
.Body = "Dear supplier " & _
vbNewLine & vbNewLine & _
"This is an automatic mail for evaluation August " & _
vbNewLine & vbNewLine & _
"Please find the result as attached and sign and reply to us within 10 Sep 2018" & _
vbNewLine & vbNewLine & _
.Display
'.Send
End With
End If
Next
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub

Re: ต้องการแนบไฟล์ในเมลโดยอ้างข้อมูลในexcel

Posted: Sat Sep 08, 2018 9:17 pm
by snasui
:D ปัญหาจากการใช้ Code นี้คืออะไร ติดขัดบรรทัดไหนครับ :?:

กรุณาอ่านวิธีการวาง Code ในกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:

Re: ต้องการแนบไฟล์ในเมลโดยอ้างข้อมูลในexcel

Posted: Sat Sep 08, 2018 9:33 pm
by prajak
ผมได้เข้าไปเพิ่มข้อมูลส่วน Attachment ให้แนบไฟล์ตามรายชื่อ ซึ่งกำหนด เป็น Range ตามด้านล่างครับ
Dim Attach As Range
Set Attach = Range(Cells(2, 8), Cells(Rows.Count, 8).End(xlUp)).Value

หลังจากที่รัน ไปหยุดอยู่ที่ "Display"
"Compile Error
Expected Function or variable"
ซึ่งคาดว่าน่าจะเกิดจากการวางและกำหนดตัวแปรครับ

Re: ต้องการแนบไฟล์ในเมลโดยอ้างข้อมูลในexcel

Posted: Sat Sep 08, 2018 9:52 pm
by snasui
:D Mark ให้เป็น Comment หรือลบทิ้งไปก่อนแล้วทดสอบดูใหม่ครับ

Re: ต้องการแนบไฟล์ในเมลโดยอ้างข้อมูลในexcel

Posted: Sun Sep 09, 2018 1:34 pm
by prajak
ไม่ติดครับอาจารย์ เพราะว่า ตรงส่วน Attachments.Add ผมใส่ที่อยู่และชื่อไฟล์แบบเข้าไปตรงๆเลย
หลังจากรันมันก็จะสร้างอีเมลมาเท่ากับจำนวนเซลที่เราเลือกครับ แต่ไฟล์แนบมันใช้ไฟล์เดียวกัน
แต่.....ผมต้องการให้ แต่ละอีเมลสร้างมานั้นเลือกชื่อไฟล์ที่กำหนดอยู่ในคอลัมน์"H"มาแนบ พูดง่ายๆคือ ไฟล์ที่แนบแต่ละอีเมลจะไม่ซ้ำกันครับ

มีคำถามครับอาจารย์
1) ถึงแม้เราเขียนคำสั่งถูกต้อง แต่ตำแหน่งการวางผิดบรรทัด หรือผิดตำแหน่งที่ควรจะเป็นมันก็จะติดdebug ใช่ไหมครับ
2)ชุดคำสั่ง บรรทัดที่ 10 คือการเลือกอีเมลaddress ด้วย input box เพื่อสร้าง objectขึ้นมา ตามจำนวนอีเมล
ผมสามารถเขียนชุดคำสั่งลักษณะเดียวกันเพื่อมาเก็บที่อยู่และชื่อไฟล์เพื่อนำไปเขียนคำสั่งเก็บที่อยู่แบบนี้จะสะดวกกว่าไหมครับ
3) ชุดคำสั่งแบบนี้ If xRgVal Like "?*@?*.?*" Then เป็นสัญลักษณ์ อาจารย์แนะนำหรือหากระทู้ที่เกี่ยวข้องเพื่อศึกษาด้วยครับ

Re: ต้องการแนบไฟล์ในเมลโดยอ้างข้อมูลในexcel

Posted: Sun Sep 09, 2018 2:02 pm
by snasui
prajak wrote: Sun Sep 09, 2018 1:34 pm ผมต้องการให้ แต่ละอีเมลสร้างมานั้นเลือกชื่อไฟล์ที่กำหนดอยู่ในคอลัมน์"H"มาแนบ พูดง่ายๆคือ ไฟล์ที่แนบแต่ละอีเมลจะไม่ซ้ำกันครับ
:D ปัจจุบันโปรแกรมทำงานส่วนนี้ได้หรือไม่ หรือติดตรงไหน อย่างไร ผมใช้หลายเครื่อง ในเครื่องนี้ไม่ได้ใช้ Oulook จึงไม่สามารถช่วยทดสอบให้ได้ครับ
prajak wrote: Sun Sep 09, 2018 1:34 pm 1) ถึงแม้เราเขียนคำสั่งถูกต้อง แต่ตำแหน่งการวางผิดบรรทัด หรือผิดตำแหน่งที่ควรจะเป็นมันก็จะติดdebug ใช่ไหมครับ
มีโอกาส Debug หรือไม่ก็ได้ครับ แต่การวางลำดับต่างกันย่อมส่งผลต่างกันได้มาก ยกตัวอย่าง ปิดไฟล์ แล้ว Save กับ Save แล้วปิดไฟล์ เป็นต้น
prajak wrote: Sun Sep 09, 2018 1:34 pm 2)ชุดคำสั่ง บรรทัดที่ 10 คือการเลือกอีเมลaddress ด้วย input box เพื่อสร้าง objectขึ้นมา ตามจำนวนอีเมล
ผมสามารถเขียนชุดคำสั่งลักษณะเดียวกันเพื่อมาเก็บที่อยู่และชื่อไฟล์เพื่อนำไปเขียนคำสั่งเก็บที่อยู่แบบนี้จะสะดวกกว่าไหมครับ
InputBox เหมาะสำหรับการกรอกข้อมูลโดยผู้ใช้ หากมีจำนวนมากจะไม่สะดวก หากเก็บไว้ในที่หนึ่งที่ใดแล้วโปรแกรมไปหยิบมาใช้เองย่อมสะดวกกว่ากันมากครับ
prajak wrote: Sun Sep 09, 2018 1:34 pm 3) ชุดคำสั่งแบบนี้ If xRgVal Like "?*@?*.?*" Then เป็นสัญลักษณ์ อาจารย์แนะนำหรือหากระทู้ที่เกี่ยวข้องเพื่อศึกษาด้วยครับ
ลองศึกษาที่นี่ครับ https://docs.microsoft.com/en-us/dotnet ... e-operator