Note: The other languages of the website are Google-translated. Back to English

วิธีส่งอีเมลโดยอัตโนมัติตามค่าเซลล์ใน Excel

สมมติว่าคุณต้องการส่งอีเมลผ่าน Outlook ไปยังผู้รับบางรายตามค่าเซลล์ที่ระบุใน Excel ตัวอย่างเช่นเมื่อค่าของเซลล์ D7 ในแผ่นงานมากกว่า 200 อีเมลจะถูกสร้างขึ้นโดยอัตโนมัติ บทความนี้แนะนำวิธีการ VBA เพื่อให้คุณแก้ไขปัญหานี้ได้อย่างรวดเร็ว

ส่งอีเมลโดยอัตโนมัติตามค่าเซลล์ด้วยรหัส VBA


ส่งอีเมลโดยอัตโนมัติตามค่าเซลล์ด้วยรหัส VBA

โปรดทำดังนี้เพื่อส่งอีเมลตามค่าเซลล์ใน Excel

1. ในแผ่นงานคุณต้องส่งอีเมลตามค่าของเซลล์ (ในที่นี้คือเซลล์ D7) คลิกขวาที่แท็บแผ่นงานแล้วเลือก ดูรหัส จากเมนูบริบท ดูภาพหน้าจอ:

2. ในการโผล่ขึ้นมา Microsoft Visual Basic สำหรับแอปพลิเคชัน โปรดคัดลอกและวางโค้ด VBA ด้านล่างลงในหน้าต่างรหัสแผ่นงาน

รหัส VBA: ส่งอีเมลผ่าน Outlook ตามค่าเซลล์ใน Excel

Dim xRg As Range
'Update by Extendoffice 2018/3/7
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("D7"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 200 Then
        Call Mail_small_Text_Outlook
    End If
End Sub
Sub Mail_small_Text_Outlook()
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
    On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "send by cell value test"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

หมายเหตุ:

1). ในรหัส VBA D7 และ มูลค่า> 200 เป็นเซลล์และค่าเซลล์ที่คุณจะส่งอีเมลตาม
2). โปรดเปลี่ยนเนื้อหาอีเมลตามที่คุณต้องการ xMailBody บรรทัดในรหัส
3). แทนที่ที่อยู่อีเมลด้วยที่อยู่อีเมลของผู้รับในบรรทัด . ถึง = "ที่อยู่อีเมล".
4). และระบุผู้รับ Cc และ Bcc ตามที่คุณต้องการใน .CC =“” และ สำเนาลับ =“” ส่วน
5). สุดท้ายเปลี่ยนหัวเรื่องอีเมลในบรรทัด .ubject = "ส่งโดยการทดสอบค่าเซลล์".

3 กด อื่น ๆ + Q เข้าด้วยกันเพื่อปิดไฟล์ Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง

จากนี้ไปเมื่อค่าที่คุณป้อนในเซลล์ D7 มากกว่า 200 อีเมลที่มีผู้รับและเนื้อหาที่ระบุจะถูกสร้างขึ้นโดยอัตโนมัติใน Outlook คุณสามารถคลิกไฟล์ ส่ง เพื่อส่งอีเมลนี้ ดูภาพหน้าจอ:

หมายเหตุ:

1. รหัส VBA จะใช้งานได้ก็ต่อเมื่อคุณใช้ Outlook เป็นโปรแกรมอีเมลของคุณ

2. หากข้อมูลที่ป้อนในเซลล์ D7 เป็นค่าข้อความหน้าต่างอีเมลจะปรากฏขึ้นเช่นกัน


ส่งอีเมลผ่าน Outlook ได้อย่างง่ายดายตามช่องของรายชื่อผู้รับจดหมายที่สร้างขึ้นใน Excel

พื้นที่ ส่งอีเมลล์ ประโยชน์ของ Kutools สำหรับ Excel ช่วยให้ผู้ใช้ส่งอีเมลผ่าน Outlook ตามรายชื่อผู้รับจดหมายที่สร้างขึ้นใน Excel
ดาวน์โหลดและทดลองใช้ทันที! (30เส้นทางฟรีวัน)


บทความที่เกี่ยวข้อง:


เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel แก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

  • นำมาใช้ใหม่: ใส่อย่างรวดเร็ว สูตรที่ซับซ้อนแผนภูมิ และสิ่งที่คุณเคยใช้มาก่อน เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ โดยไม่สูญเสียข้อมูล แยกเนื้อหาของเซลล์ รวมแถว / คอลัมน์ที่ซ้ำกัน... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • คุณสมบัติที่ทรงพลังมากกว่า 300 รายการ. รองรับ Office/Excel 2007-2021 และ 365 รองรับทุกภาษา ง่ายต่อการปรับใช้ในองค์กรหรือองค์กรของคุณ คุณสมบัติเต็มรูปแบบ ทดลองใช้ฟรี 30 วัน รับประกันคืนเงินภายใน 60 วัน
kte แท็บ 201905

แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มประสิทธิภาพการทำงานของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (308)
ได้รับคะแนน 5 จาก 5 · การจัดอันดับ 1
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ควรแก้ไขโค้ดอย่างไรเพื่อนำไปใช้กับทั้งช่วงของเซลล์
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียน คุณเด็บบี้
โปรดลองโค้ด VBA ด้านล่างเพื่อแก้ปัญหา

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ถ้า (ไม่ตัดกัน(เป้าหมาย, ช่วง("A1:D4")) ไม่มีอะไรเลย) และ (Target.Value > 200) แล้ว
โทร Mail_small_Text_Outlook
End If
ย่อยสิ้นสุด
อีเมลย่อย_small_Text_Outlook()
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
xMailBody = "สวัสดี" & vbNewLine & vbNewLine & _
"นี่คือบรรทัดที่ 1" & vbNewLine & _
“นี่คือบรรทัดที่ 2”
เกี่ยวกับข้อผิดพลาดต่อไป
ด้วย xOutMail
.To = "ที่อยู่อีเมลของผู้รับของคุณ"
.CC = ""
.BCC = ""
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = xMailBody
.Display หรือใช้ .Send
จบด้วย
เมื่อเกิดข้อผิดพลาด GoTo 0
ตั้งค่า xOutMail = Nothing
ตั้งค่า xOutApp = Nothing
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันมีปัญหาในการให้โค้ดนี้แสดงข้อความแจ้งหากค่าในเซลล์มีการเปลี่ยนแปลงทางอ้อม ตัวอย่างเช่น ถ้าฉันให้สมการผลรวมเปลี่ยนค่านี้โดยอัตโนมัติ เมื่อสมการทำงานและค่าไปเหนือค่าที่ตั้งไว้เพื่อแจ้งอีเมล จะไม่ทำเช่นนั้น เว้นแต่ฉันจะเปลี่ยนตัวเลขด้วยตนเอง มีวิธีทำให้อีเมลแจ้งแม้ว่าจะเปลี่ยนทางอ้อมหรือไม่?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียน จอร์แดน
รหัส VBA ต่อไปนี้สามารถช่วยคุณแก้ปัญหาได้ โปรดอย่าลืมแทนที่ "ที่อยู่อีเมล" ด้วยที่อยู่อีเมลของผู้รับในรหัส ขอขอบคุณ.

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRgPre เป็นช่วง
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ตั้งค่า xRg = ช่วง ("D7")
ตั้งค่า xRgPre = xRg.Precedents
ถ้า xRg.Value > 200 แล้ว
ถ้า Target.Address = xRg.Address แล้ว
โทร Mail_small_Text_Outlook
ElseIf (ไม่ใช่ xRgPre ไม่มีอะไร) และ (ตัดกัน (เป้าหมาย xRgPre).Address = Target.Address) จากนั้น
โทร Mail_small_Text_Outlook
End If
End If
ย่อยสิ้นสุด
อีเมลย่อย_small_Text_Outlook()
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
xMailBody = "สวัสดี" & vbNewLine & vbNewLine & _
"นี่คือบรรทัดที่ 1" & vbNewLine & _
“นี่คือบรรทัดที่ 2”
เกี่ยวกับข้อผิดพลาดต่อไป
ด้วย xOutMail
. ถึง = "ที่อยู่อีเมล"
.CC = ""
.BCC = ""
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = xMailBody
.Display หรือใช้ .Send
จบด้วย
เมื่อเกิดข้อผิดพลาด GoTo 0
ตั้งค่า xOutMail = Nothing
ตั้งค่า xOutApp = Nothing
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันได้แก้ไขโค้ดที่แนะนำเพื่อให้ใช้งานได้กับแอปพลิเคชันของฉัน
เปลี่ยน xRg = Range("C2:C40") และถ้า xRg.Value = -1

ปัญหาที่ฉันมีคือทุกครั้งที่มีการเปลี่ยนแปลงในเซลล์ใดๆ และตราบใดที่เซลล์ใดเซลล์หนึ่งในช่วงของฉันคือ = -1 มันจะเรียก Mail_small_Text_Outlook
ฉันพยายามโทรเฉพาะเมื่อเซลล์ในช่วงของฉันถูกเปลี่ยนทางอ้อมเป็น -1
ฉันยังสงสัยว่าเป็นไปได้หรือไม่ที่จะมีคุณสมบัติตรงตามเกณฑ์สองประการ
เช่นเดียวกับการตรวจสอบช่วง A และช่วง B และหากตรงตามเกณฑ์เรียกฟังก์ชัน

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือ ฉันใหม่ต่อสิ่งนี้ทั้งหมด แต่การอ่านกระทู้นี้ทำให้ฉันมีประมาณ 90%


Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRgPre เป็นช่วง
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ตั้งค่า xRg = ช่วง ("C2:C40")
ตั้งค่า xRgPre = xRg.Precedents
ถ้า xRg.Value = -1 แล้ว
ถ้า Target.Address = xRg.Address แล้ว
โทร Mail_small_Text_Outlook
ElseIf (ไม่ใช่ xRgPre ไม่มีอะไร) และ (ตัดกัน (เป้าหมาย xRgPre).Address = Target.Address) จากนั้น
โทร Mail_small_Text_Outlook
End If
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันใช้รหัสนี้โดยมีการเปลี่ยนแปลงเพียงอย่างเดียวเนื่องจากฉันได้นำไปใช้กับทั้งคอลัมน์ [Set xRg = Range("D4:D13")] ตอนนี้เหตุการณ์จะทริกเกอร์ทุกครั้งที่ทำการคำนวณโดยไม่คำนึงว่าวาล์วในคอลัมน์ D จะต่ำกว่าค่าเป้าหมายหรือไม่ ความคิดใด ๆ ว่าทำไมถึงเป็นเช่นนั้น?


Dim Xrg เป็นช่วง
Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRgPre เป็นช่วง
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ตั้งค่า Xrg = ช่วง ("D4:D13")
ตั้งค่า xRgPre = Xrg.Precedents
ถ้า Xrg.Value < 1200 แล้ว
ถ้า Target.Address = Xrg.Address แล้ว
โทร Mail_small_Text_Outlook
ElseIf (ไม่ใช่ xRgPre ไม่มีอะไร) และ (ตัดกัน (เป้าหมาย xRgPre).Address = Target.Address) จากนั้น
โทร Mail_small_Text_Outlook
End If
End If
ย่อยสิ้นสุด

อีเมลย่อย_small_Text_Outlook()
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
xMailBody = "สวัสดี" & vbNewLine & _
"ทดสอบ vba" _
& vbNewLine & _
"บรรทัดที่ 2"
เกี่ยวกับข้อผิดพลาดต่อไป
ด้วย xOutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = "ทดสอบอีเมลอัตโนมัติ"
.Body = xMailBody
.แสดง
จบด้วย
เมื่อเกิดข้อผิดพลาด GoTo 0
ตั้งค่า xOutMail = Nothing
ตั้งค่า xOutApp = Nothing

ย่อยสิ้นสุด


ขอบคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี

ฉันมีปัญหาเพราะต้องเพิ่มผู้รับอีเมลครั้งแล้วครั้งเล่า โปรดชี้แนะหากสามารถเพิ่มรายชื่อผู้รับอีเมลในฟังก์ชันนี้ ฟังก์ชันจะเลือกที่อยู่อีเมลจากรายการที่อยู่อีเมลที่ให้ไว้หรือรายการอัปโหลด และฟังก์ชันจะส่งอีเมลซึ่งประกอบขึ้นแล้วไปยังผู้รับที่ต้องการ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียน เฮนรี่
รหัส VBA ต่อไปนี้สามารถช่วยคุณแก้ปัญหาได้ โปรดวางสคริปต์ VBA ลงในโมดูลเวิร์กชีตของคุณ เมื่อค่าในเซลล์ที่ระบุตรงตามเงื่อนไข a Kutools สำหรับ Excel จะปรากฏขึ้น โปรดเลือกเซลล์ที่มีที่อยู่อีเมลของผู้รับ จากนั้นคลิกปุ่ม OK ปุ่ม จากนั้นอีเมลที่มีผู้รับที่ระบุจะเปิดขึ้น กรุณาส่งตามที่คุณต้องการ

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ตั้งค่า xRg = ช่วง ("D7")
ถ้า xRg = Target และ Target.Value > 200 แล้ว
โทร Mail_small_Text_Outlook
End If
ย่อยสิ้นสุด
อีเมลย่อย_small_Text_Outlook()
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
Dim xRgMsg เป็นช่วง
Dim xCell เป็นช่วง
Set xRgMsg = Application.InputBox("โปรดเลือกเซลล์ที่อยู่:", "Kutools for Excel", , , , , , , 8)
xMailBody = "สวัสดี" & vbNewLine & vbNewLine & _
"นี่คือบรรทัดที่ 1" & vbNewLine & _
“นี่คือบรรทัดที่ 2”
เกี่ยวกับข้อผิดพลาดต่อไป
สำหรับแต่ละ xCell ใน xRgMsg
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
ด้วย xOutMail
.ถึง = xCell.Value
.CC = ""
.BCC = ""
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = xMailBody
.Display หรือใช้ .Send
จบด้วย
xOutApp = ไม่มีอะไร
xOutMail = ไม่มีอะไร
ต่อไป
เมื่อเกิดข้อผิดพลาด GoTo 0
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
จะส่งจดหมายอัตโนมัติโดยไม่มีการหยุดชะงักใด ๆ ด้วยตนเอง
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียน พระพรหม
หากคุณต้องการส่งอีเมลโดยตรงโดยไม่แสดง โปรดแทนที่บรรทัด ".Display" ด้วย ".Send" ในโค้ด VBA ด้านบน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันใส่สคริปต์เดียวกัน แต่มันไม่ทำงาน โปรดช่วยฉันในตอนที่ 1

Dim xRg เป็นช่วง

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ตั้งค่า xRg = ช่วง ("D7")
ถ้า xRg = Target และ Target.Value = 200 แล้ว
โทร Mail_small_Text_Outlook
End If

ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
โหระพาที่รัก
มีการเตือนเมื่อรันโค้ดหรือไม่?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี คุณจะแก้ไขโค้ดนี้อย่างไรเพื่อตรวจสอบว่ากลุ่มเซลล์มีสตริง "ไม่ตรงกัน" หรือไม่ และส่งอีเมลหากมี
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียนคุณโฮเซ่
โปรดลองรหัส VBA ด้านล่าง เมื่อรันโค้ด ไดอะล็อกบ็อกซ์จะปรากฏขึ้น โปรดเลือกช่วงที่คุณจะตรวจสอบสตริง จากนั้นคลิกปุ่ม OK หากไม่มีสตริง คุณจะได้รับกล่องโต้ตอบพร้อมท์ หากมีสตริงอยู่ในช่วง อีเมลที่ระบุผู้รับ หัวเรื่อง และเนื้อหาจะแสดงขึ้น

ส่งย่อยอีเมล์()
หรี่ฉันนาน
Dim J ตราบ
Dim xRg เป็นช่วง
หรี่ xArr
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
Dim xFlag เป็นบูลีน
เกี่ยวกับข้อผิดพลาดต่อไป
Set xRg = Application.InputBox("กรุณาเลือกช่วง", "Kutools สำหรับ Excel", Selection.Address, , , , , 8)
ถ้า xRg ไม่มีอะไร ให้ออกจาก Sub
xArr = xRg.ค่า
xFlag = เท็จ
สำหรับฉัน = 1 ถึง UBound(xArr)
สำหรับ J = 1 ถึง UBound(xArr, 2)
ถ้า xArr(I, J) = "No Match" แล้ว
xFlag = จริง
End If
ต่อไป
ต่อไป
ถ้า xFlag แล้ว
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
xMailBody = "สวัสดี" & vbNewLine & vbNewLine & _
"นี่คือบรรทัดที่ 1" & vbNewLine & _
“นี่คือบรรทัดที่ 2”
ด้วย xOutMail
.To = "ที่อยู่อีเมล"
.CC = ""
.BCC = ""
.Subject = "ตรงกัน"
.Body = xMailBody
.Display หรือใช้ .Send
จบด้วย
อื่น
MsgBox "ไม่พบค่าที่ตรงกัน", vbInformation, "KuTools สำหรับ Excel"
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันจะเปลี่ยนรหัสนี้เพื่อส่งเกรดนักเรียนให้ผู้ปกครองได้อย่างไร โดยที่ถ้าคอลัมน์ A คือเกรด และคอลัมน์ B เป็นอีเมลหลัก ฉันต้องการกรอกอีเมลสำหรับนักเรียนแต่ละคนที่มี F เป็นเกรด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียน คุณแฟรงค์
รหัส VBA ด้านล่างสามารถช่วยคุณแก้ปัญหาได้ ขอขอบคุณ.

อีเมลย่อย_small_Text_Outlook()
Dim xRg เป็นช่วง
หรี่ฉันนาน
Dim xRows ตราบใดที่
Dim xVal เป็นสตริง
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
เกี่ยวกับข้อผิดพลาดต่อไป
Set xRg = Application.InputBox("กรุณาเลือกคอลัมน์เกรดและคอลัมน์อีเมล (สองคอลัมน์)", "Kutools สำหรับ Excel", Selection.Address, , , , , 8)
ถ้า xRg ไม่มีอะไร ให้ออกจาก Sub
xRows = xRg.Rows.Count
ตั้งค่า xRg = xRg(2)
สำหรับฉัน = 1 ถึง xRows
xVal = xRg.Offset(I, -1).ข้อความ
ถ้า xVal = "F" แล้ว
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
xMailBody = "สวัสดี" & vbNewLine & vbNewLine & _
"นี่คือเกรดของลูกคุณ" & xRg.Offset(I, -1).Text
ด้วย xOutMail
.to = xRg.Offset(I, 0).ข้อความ
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = xMailBody
.Display หรือใช้ .Send
จบด้วย
เมื่อเกิดข้อผิดพลาด GoTo 0
ตั้งค่า xOutMail = Nothing
ตั้งค่า xOutApp = Nothing
End If
ต่อไป
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันมีรายการที่อยู่อีเมลในไฟล์ excel แล้ว ฉันจะแก้ไขรหัสเพื่อเลือกที่อยู่อีเมลของบุคคลโดยอัตโนมัติได้อย่างไรหากเซลล์ D7 ของเขาเป็น >200
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอให้เป็นวันที่ดี,
รหัส VBA ต่อไปนี้สามารถช่วยคุณแก้ปัญหาได้ โปรดวางสคริปต์ VBA ลงในโมดูลเวิร์กชีตของคุณ เมื่อค่าในเซลล์ที่ระบุตรงตามเงื่อนไข a Kutools สำหรับ Excel จะปรากฏขึ้น โปรดเลือกเซลล์ที่มีที่อยู่อีเมลของผู้รับ จากนั้นคลิกปุ่ม OK ปุ่ม จากนั้นอีเมลที่มีผู้รับที่ระบุจะเปิดขึ้น กรุณาส่งตามที่คุณต้องการ

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ตั้งค่า xRg = ช่วง ("D7")
ถ้า xRg = Target และ Target.Value > 200 แล้ว
โทร Mail_small_Text_Outlook
End If
ย่อยสิ้นสุด
อีเมลย่อย_small_Text_Outlook()
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
Dim xRgMsg เป็นช่วง
Dim xCell เป็นช่วง
Set xRgMsg = Application.InputBox("โปรดเลือกเซลล์ที่อยู่:", "Kutools for Excel", , , , , , , 8)
xMailBody = "สวัสดี" & vbNewLine & vbNewLine & _
"นี่คือบรรทัดที่ 1" & vbNewLine & _
“นี่คือบรรทัดที่ 2”
เกี่ยวกับข้อผิดพลาดต่อไป
สำหรับแต่ละ xCell ใน xRgMsg
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
ด้วย xOutMail
.ถึง = xCell.Value
.CC = ""
.BCC = ""
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = xMailBody
.Display หรือใช้ .Send
จบด้วย
xOutApp = ไม่มีอะไร
xOutMail = ไม่มีอะไร
ต่อไป
เมื่อเกิดข้อผิดพลาด GoTo 0
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันมีปัญหาในการส่งอีเมลผ่าน Outlook ฉันได้รับข้อผิดพลาดว่า "โปรแกรมกำลังพยายามส่งอีเมลในนามของคุณ หากเป็นเรื่องที่ไม่คาดคิด โปรดปฏิเสธและยืนยันว่าซอฟต์แวร์ป้องกันไวรัสของคุณเป็นเวอร์ชันล่าสุด"
โปรดช่วยด้วยเนื่องจากฉันไม่สามารถทำให้เป็นอัตโนมัติได้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอโทษ มายังค์
รหัสทำงานได้ดีในกรณีของฉัน ดูเหมือนว่ามีการกำหนดค่าบางอย่างเกี่ยวกับฟังก์ชัน "ส่งในนาม" ใน Outlook ของคุณ กรุณาตรวจสอบสำหรับมัน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันจะใช้รหัสอะไรหากฉันพยายามส่งอีเมลถึงผู้จัดการที่มีรายการผลไม้ที่มีปริมาณ > 200 ต่อเดือน (ตามตัวอย่างของคุณ) หรือหมดอายุเร็วๆ นี้ (ตามวันที่)
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
อาจเป็นวิธีการในบทความนี้ "วิธีการส่งอีเมลหากถึงกำหนดใน Excel?" สามารถช่วยคุณได้.
กรุณาไปตามลิงค์นี้: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันจะแก้ไขรหัสเพื่อส่งอีเมลตามวันที่ในเซลล์ได้อย่างไร ตัวอย่างเช่น ฉันต้องการตรวจทานเอกสารทุกๆ 15 เดือน และฉันต้องการยกเลิกอีเมลในระยะเวลา 12 เดือนไปยังที่อยู่อีเมลที่แจ้งว่าต้องมีการตรวจสอบเอกสาร ตอนนี้ฉันได้ส่งอีเมลอัตโนมัติโดยเปลี่ยน .Display เป็น .Send และใช้งานได้ดีตามที่เขียนไว้ แต่ฉันต้องเปลี่ยนอะไรเพื่อใช้ฟังก์ชันวันที่แทนจำนวนเต็ม
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คุณจะเพิ่มหลายช่วงใน "Set xRg = Range("D7")" ได้อย่างไร ฉันต้องการแก้ไขและเพิ่ม Range("D7:F7") อย่างไรก็ตาม ฉันได้รับข้อผิดพลาดของ Run Time Error 13, Type Mismatch และกำลังพาฉันไปที่ If xRg = Target And Target.Value > 2 จากนั้น


ฉันจะแก้ปัญหานี้ได้อย่างไร
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอให้เป็นวันที่ดี,
โปรดลองโค้ด VBA ด้านล่างเพื่อแก้ปัญหา

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ถ้า (ไม่ตัดกัน(เป้าหมาย, พิสัย("D7:F7")) ไม่มีอะไรเลย) และ (Target.Value > 200) แล้ว
โทร Mail_small_Text_Outlook
End If
ย่อยสิ้นสุด
อีเมลย่อย_small_Text_Outlook()
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
xMailBody = "สวัสดี" & vbNewLine & vbNewLine & _
"นี่คือบรรทัดที่ 1" & vbNewLine & _
“นี่คือบรรทัดที่ 2”
เกี่ยวกับข้อผิดพลาดต่อไป
ด้วย xOutMail
.To = "ที่อยู่อีเมลของผู้รับของคุณ"
.CC = ""
.BCC = ""
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = xMailBody
.Display หรือใช้ .Send
จบด้วย
เมื่อเกิดข้อผิดพลาด GoTo 0
ตั้งค่า xOutMail = Nothing
ตั้งค่า xOutApp = Nothing
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ทำงานได้ดีอย่างสมบูรณ์ .. ขอบคุณ .. :) :)
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มันใช้งานไม่ได้สำหรับฉันเนื่องจากค่าใน D7 เป็นผลมาจากสูตร จะเกิดอะไรขึ้นถ้าเซลล์ D7 มีสูตร เช่น D7 =2*120 มันยังคงเป็นไปตามเงื่อนไข แต่ไม่มีอะไรเกิดขึ้น กรุณาช่วย
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
วิธีหยุดโค้ดไม่ให้ทำงาน เช่น ไม่แจ้งอีเมลเมื่อไม่ตรงตามเงื่อนไข

แม้ว่า D7 < 200 ฉันยังคงได้รับแจ้งอีเมล
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอให้เป็นวันที่ดี,
รหัสได้รับการอัปเดตในโพสต์พร้อมปัญหาที่แก้ไขแล้ว ขอบคุณสำหรับความคิดเห็นของคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
Hi

ขอบคุณมากสำหรับการโพสต์โค้ด VBA และคำแนะนำนี้ เมื่อฉันพบมันฉันรู้สึกเหมือนฉันถูกล็อตโต้ อย่างไรก็ตาม ฉันติดอยู่กับบางสิ่ง ดังนั้นหวังว่าคุณจะสามารถช่วยได้ (ฉันเพิ่งเริ่มใช้ VBA มีเพียงความเข้าใจพื้นฐานเท่านั้น)

ฉันได้คัดลอกโค้ดและเปลี่ยนค่าของเซลล์และเซลล์เพื่อเลือกจากช่วงหากตรงตามเกณฑ์ ฉันได้ลองและทดสอบแล้วและใช้งานได้ และฉันได้รับอีเมลถึง Outlook ตามเกณฑ์

1) อย่างไรก็ตาม ฉันไม่สามารถหาวิธีทำให้โค้ด VBA ทำงานโดยอัตโนมัติเมื่อฉันเปิดเวิร์กชีต excel ได้ แทนที่จะต้องคลิกบนแอปพลิเคชัน VBA และเลือก run คุณช่วยแนะนำได้ไหมว่าจะมีข้อความแจ้งเพิ่มเติมให้พิมพ์ลงในโค้ด VBA ด้านบนซึ่งจะทำสิ่งนี้หรือต้องทำแยกกัน

2) นอกจากนี้ยังมีวิธีรับรหัส VBA เพื่อส่งอีเมลไปยังบุคคลหนึ่งๆ หากวันครบกำหนดคือใช่สำหรับบางรายการดังที่แสดงในตัวอย่างด้านล่าง
คอลัมน์ซ่อนอีเมล
ชื่อ - นามสกุล

ขั้นตอน
ขั้นตอนที่ 1 วันครบกำหนดใช่
ขั้นตอนที่ 2 วันที่ครบกำหนด no

ฉันจะมีคนจำนวนมากในสเปรดชีต (ข้ามในแนวนอนเป็นแถว) และ 'ใช่' อาจถูกเน้นสำหรับขั้นตอนที่ค้างชำระต่างๆ (แสดงรายการในแนวตั้งในคอลัมน์ A มีวิธีสร้างโค้ด VBA ที่ทำงานในลักษณะนี้หรือไม่ - ถ้า 'ใช่' สำหรับ 'คนที่ 1' ให้ส่งอีเมลถึง 'บุคคลที่ 1' ด้วย 'ขั้นตอนที่ #' (หรือหมายเลข) และวันครบกำหนด สามารถระบุขั้นตอนทั้งหมดและวันครบกำหนดที่ตามมาในอีเมลได้

ฉันจะไม่รังเกียจถ้าฉันต้องตั้งรหัส VBA แยกต่างหากสำหรับแต่ละคน ตราบใดที่มันส่งจดหมายของเอกสารทั้งหมดที่ค้างชำระสำหรับบุคคลนั้นและวันครบกำหนด

หวังว่าคุณจะช่วยได้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
แอนที่รัก,
โปรดลองใช้โค้ด VBA ด้านล่าง ขอบคุณสำหรับความคิดเห็นของคุณ.

อีเมลย่อย_small_Text_Outlook()
Dim xRg เป็นช่วง
Dim xCell เป็นช่วง
หรี่ฉันนาน
Dim xRows ตราบใดที่
Dim xCols ตราบใด
Dim xVal เป็นสตริง
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
เกี่ยวกับข้อผิดพลาดต่อไป
Set xRg = Application.InputBox("เลือกช่วงที่มีค่าเซลล์ที่คุณจะส่งอีเมลตาม:", "Kutools for Excel", Selection.Address, , , , , 8)
ถ้า xRg ไม่มีอะไร ให้ออกจาก Sub
xRows = xRg.Rows.Count
xCols = xRg.Columns.Count
สำหรับฉัน = 1 ถึง xRows
ตั้งค่า xCell = xRg(I, xCols)
ถ้า xCell.Value = "ใช่" แล้ว
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
xMailBody = "สวัสดี" & vbNewLine & vbNewLine & _
"นี่คือข้อมูลของคุณ: " & vbNewLine & xCell.Offset(0, -1).Text & vbNewLine & xCell.Offset(0, -2).Text
ด้วย xOutMail
.To = xCell.Offset(0, -4).ข้อความ
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = xMailBody
.Display หรือใช้ .Send
จบด้วย
เมื่อเกิดข้อผิดพลาด GoTo 0
ตั้งค่า xOutMail = Nothing
ตั้งค่า xOutApp = Nothing
End If
ต่อไป
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คริสตัล

สิ่งนี้แทนที่รหัสต่อไปนี้:

อีเมลย่อย ()

Dim xRg เป็นช่วง

Dim xRgEach เป็นช่วง

Dim xEmail_Subject, xEmail_Send_Form,;ฯลฯ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เราจะใส่รหัสนี้ที่ไหน?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
วันดี,
คุณต้องวางรหัสลงในหน้าต่างรหัสของเวิร์กชีต
เปิดหน้าต่าง Microsoft Visual Basic for Applications ดับเบิลคลิกที่ชื่อแผ่นงานในบานหน้าต่างด้านซ้ายเพื่อเปิดตัวแก้ไขโค้ด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี,


ฉันกำลังมีปัญหาเล็กน้อยในการเขียนโค้ดนี้ (มือใหม่ - อาจกัดมากกว่าที่ฉันจะเคี้ยวได้)


ขณะนี้ฉันมีสเปรดชีตที่มีข้อมูลต่อไปนี้ซึ่งฉันต้องการความช่วยเหลือในการทำให้เป็นอัตโนมัติและส่งอีเมลถึงข้อผิดพลาดที่ทรัพย์สินของเราสำหรับธุรกิจของเรา


ขณะนี้ฉันต้องการรหัสที่จะใช้ข้อมูลต่อไปนี้:


1) ที่อยู่และปัญหา ( 2 เซลล์ "ทั่วไป" ที่ผสานผ่าน ((ในเซลล์ D1)) " = =CONCAT(B1," "C1,)"
ที่อยู่ใน B1 จะเหมือนกันหมด (มากหรือน้อย)
ในขณะที่ C1 จะเปลี่ยนแปลงอยู่เสมอขึ้นอยู่กับความผิดของที่พัก


2) อีเมลที่จะส่งโดยใช้ที่อยู่อีเมลเดียวกัน (ฉันสามารถใช้ $E$1 หรือฉันต้องใช้ E1 - E1 เป็นต้น) หรือฉันเพียงแค่ป้อน " TheEmailAdress@.co.uk" ในบรรทัดของรหัส


3) เนื้อหาอีเมลที่จะเติมในลักษณะเดียวกับจุดที่ 1) ...... ((ในเซลล์ F1)) " =CONCAT(G1," ",H1)
สิ่งเหล่านี้จะมีการเปลี่ยนแปลงอย่างต่อเนื่องเนื่องจากเป็นตัวแทนของบริษัท (G1) และสิ่งที่พวกเขากำลังทำ แก้ไข อ้างอิง ect (H1)

4) ตัวกระตุ้นในการส่งอีเมล ฉันจะเป็นหมายเลข 7 แผ่นงานได้รับการอัปเดตทุกวัน (7 วันในหนึ่งสัปดาห์)
ดังนั้นฉันต้องการทริกเกอร์เพื่อส่งอีเมลในวันที่ 7 แต่ไม่เหมือนวันที่ 8, 9, 10+ เป็นต้น และไม่ใช่ก่อนหน้าเช่น 1-6 นี่จะอยู่ใน A4 : A 100+ (ในขณะที่เรากำลังขยายตัวอย่างต่อเนื่อง


4) ฉันเคยใช้ตัวอย่างเล็กๆ น้อยๆ จากผู้ใช้รายอื่นที่พูดถึงการใช้รายการทริกเกอร์เพื่อส่งอีเมล แต่ไม่แน่ใจว่าถูกต้อง 100% แต่ฉันต้องการให้สแกนแม้ว่า Collum A... . A4: A100
และหากมี 47 เซลล์ที่มีเพียง " 7 " จะมีการส่งอีเมล 47 ฉบับ


ขอบคุณมากสำหรับการอ่านและฉันหวังว่าคุณจะสามารถช่วย :)
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มาร์ตินที่รัก
ขอโทษที่ช่วยเรื่องนี้ไม่ได้
คุณสามารถโพสต์คำถามของคุณในฟอรัมของเรา: https://www.extendoffice.com/forum.html เพื่อรับการสนับสนุน Excel เพิ่มเติมจากเจ้าหน้าที่ด้านเทคนิคของเรา
ขอบคุณสำหรับความคิดเห็นของคุณ.

ขอแสดงความนับถือที่ดีที่สุด
คริสตัล
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี


จะเป็นอย่างไรหากฉันต้องการส่งอีเมลโดยอิงจากคำว่า "เสร็จสิ้น" ที่เพิ่มลงในคอลัมน์ L
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เจสซี่ที่รัก
รหัส VBA ต่อไปนี้สามารถช่วยคุณแก้ปัญหาได้ ขอบคุณสำหรับความคิดเห็นของคุณ.

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ถ้า (ไม่ตัดกัน (เป้าหมาย, ช่วง ("L:L")) ไม่มีอะไร) และ (Target.Value = "เสร็จสมบูรณ์") แล้ว
โทร Mail_small_Text_Outlook
End If
ย่อยสิ้นสุด
อีเมลย่อย_small_Text_Outlook()
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
xMailBody = "สวัสดี" & vbNewLine & vbNewLine & _
"นี่คือบรรทัดที่ 1" & vbNewLine & _
“นี่คือบรรทัดที่ 2”
เกี่ยวกับข้อผิดพลาดต่อไป
ด้วย xOutMail
.To = "ที่อยู่อีเมลของผู้รับของคุณ"
.CC = ""
.BCC = ""
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = xMailBody
.Display หรือใช้ .Send
จบด้วย
เมื่อเกิดข้อผิดพลาด GoTo 0
ตั้งค่า xOutMail = Nothing
ตั้งค่า xOutApp = Nothing
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
ฉันต้องการให้ Outlook ปรากฏขึ้นเฉพาะเมื่อข้อมูลที่ฉันวางลงในช่วง ("D7:F7") มีอย่างน้อย 1 ศูนย์หรือว่างเปล่า
ฉันได้ลบบรรทัด 'If Target.Cells.Count > 1 แล้วออกจาก Sub' และตอนนี้ Outlook จะเปิดขึ้นเสมอเมื่อฉันวางกลุ่มของค่าลงในเซลล์ D7:F7

ช่วยด้วย.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เรียน ม.ค.
สคริปต์ต่อไปนี้สามารถช่วยคุณแก้ปัญหาได้ ขอบคุณสำหรับความคิดเห็นของคุณ.

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Address = Range("D7:F7").Address แล้ว
ด้วย Application.WorksheetFunction
ถ้า .CountIf(Target, "") > 0 หรือ .CountIf(Target, 0) > 0 แล้ว
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
ด้วย xOutMail
. ถึง = "ที่อยู่อีเมล"
.CC = ""
.BCC = ""
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = "สวัสดีครับ"
.Display หรือใช้ .Send
จบด้วย
เมื่อเกิดข้อผิดพลาด GoTo 0
ตั้งค่า xOutMail = Nothing
ตั้งค่า xOutApp = Nothing
End If
จบด้วย
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ดังนั้นฉันจึงใช้การแก้ไขของคุณเพื่อรวมช่วงของเซลล์ แต่ (ถ้าเราใช้ตัวอย่างเวิร์กชีต) ฉันสงสัยว่าจะเพิ่มประเภทของผลไม้ วันที่ และปริมาณลงในอีเมล HTML จากเวิร์กชีตได้อย่างไรหากตรงตามเกณฑ์ มีอีเมลที่สร้างขึ้น เลยจะบอกว่า

"สวัสดี,"

ชื่อผลไม้จากเซลล์ "ต้องสั่งซื้อใหม่เนื่องจากวันที่สั่งซื้อ: " วันที่สั่งซื้อจากเซลล์ "เรามีปริมาณนี้:" ปริมาณจากเซลล์
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี โนเอมิ
โปรดลองใช้สคริปต์ VBA นี้

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRg เป็นช่วง
Dim I, J, K ตราบ
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Address = Range("D7").Address แล้ว
ด้วย Application.WorksheetFunction
ถ้า IsNumeric(Target.Value) และ Target.Value > 200 แล้ว
Set xRg = Application.InputBox("โปรดเลือกช่วงเซลล์ที่คุณจะแสดงในเนื้อหาของเมล:", "KuTools for Excel", Selection.Address, , , , , 8)
ถ้า xRg ไม่มีอะไร ให้ออกจาก Sub
สำหรับฉัน = 1 ถึง xRg.Rows.Count
สำหรับ J = 1 ถึง xRg.Rows(I).Columns.Count
สำหรับ K = 1 ถึง xRg.Rows(I).Columns(J).Count
xMailBody = xMailBody & " " & xRg.Rows(I).Columns(J).Cells(K).Text
ต่อไป
ต่อไป
xMailBody = xMailBody & vbNewLine
ต่อไป
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
ด้วย xOutMail
. ถึง = "ที่อยู่อีเมล"
.CC = ""
.BCC = ""
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = "สวัสดี" & vbNewLine & xMailBody
.Display หรือใช้ .Send
จบด้วย
เมื่อเกิดข้อผิดพลาด GoTo 0
ตั้งค่า xOutMail = Nothing
ตั้งค่า xOutApp = Nothing
End If
จบด้วย
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีคริสตัล
ขอบคุณสำหรับรหัสของคุณ ถ้าเป็นไปได้ กรุณาส่งรหัสตามรายละเอียดด้านล่าง

ถ้าเรามี 8 ถึง 9 colum ที่ใช้การหมดอายุต่างกัน เช่น วันหมดอายุหนังสือเดินทาง วันหมดอายุใบขับขี่ วันหมดอายุทะเบียนรถ วันหมดอายุบัตรผ่านประตู และอื่น ๆ เป็นต้น และต้องส่งการแจ้งเตือนทางไปรษณีย์ถึง 5 คนเท่านั้น

เช่นแผ่นวันที่ของเรามีพนักงานมากกว่า 300 คน วันหมดอายุและวันหมดอายุภายใน 15 วันในสีแดงและควรส่งการแจ้งเตือนทางอีเมล

กรุณาทำสิ่งที่จำเป็น

ขอบคุณล่วงหน้า
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี,
เราได้โพสต์บทความ "จะส่งอีเมลได้อย่างไรหากถึงกำหนดใน Excel"
คุณสามารถดูว่ามีคำตอบในบทความนี้หรือไม่ โปรดไปที่ลิงก์นี้เพื่อเปิดบทความ: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
ขอขอบคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี- ถ้าฉันต้องการส่งไปยังอีเมลจากรายการแทนที่จะใส่อีเมลแอดเดรสจริงลงในโค้ด เป็นไปได้ไหม ขอบใจ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี,
โปรดลองรหัส VBA ด้านล่าง เมื่อเซลล์ที่ระบุตรงตามเงื่อนไข กล่องโต้ตอบจะปรากฏขึ้น โปรดเลือกเซลล์ที่มีที่อยู่อีเมลที่คุณจะส่งอีเมลไป หวังว่ามันจะช่วยได้ ขอขอบคุณ.

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ตั้งค่า xRg = ช่วง ("D7")
ถ้า xRg = Target และ Target.Value > 200 แล้ว
โทร Mail_small_Text_Outlook
End If
ย่อยสิ้นสุด
อีเมลย่อย_small_Text_Outlook()
Dim xOutApp เป็นวัตถุ
Dim xOutMail เป็นวัตถุ
Dim xMailBody เป็นสตริง
Dim xRgMsg เป็นช่วง
Dim xCell เป็นช่วง
Set xRgMsg = Application.InputBox("โปรดเลือกเซลล์ที่อยู่:", "Kutools for Excel", , , , , , , 8)
xMailBody = "สวัสดี" & vbNewLine & vbNewLine & _
"นี่คือบรรทัดที่ 1" & vbNewLine & _
“นี่คือบรรทัดที่ 2”
เกี่ยวกับข้อผิดพลาดต่อไป
สำหรับแต่ละ xCell ใน xRgMsg
ตั้งค่า xOutApp = CreateObject("Outlook.Application")
ตั้งค่า xOutMail = xOutApp.CreateItem(0)
ด้วย xOutMail
.ถึง = xCell.Value
.CC = ""
.BCC = ""
.ubject = "ส่งโดยการทดสอบค่าเซลล์"
.Body = xMailBody
.Display หรือใช้ .Send
จบด้วย
xOutApp = ไม่มีอะไร
xOutMail = ไม่มีอะไร
ต่อไป
เมื่อเกิดข้อผิดพลาด GoTo 0
ย่อยสิ้นสุด
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
โหลดเพิ่มเติม
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ

ช่องทางอื่นๆ

ลิขสิทธิ์© 2009 - wwwextendoffice.com | สงวนลิขสิทธิ์. ขับเคลื่อนโดย ExtendOffice. | แผนผังเว็บไซต์
Microsoft และโลโก้ Office เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Microsoft Corporation ในสหรัฐอเมริกาและ / หรือประเทศอื่น ๆ
ได้รับการปกป้องโดย Sectigo SSL