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. في ظهرت ميكروسوفت فيسوال باسيك للتطبيقات نافذة ، يرجى نسخ ولصق رمز فبا أدناه في نافذة كود الورقة.

كود 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). استبدل عنوان البريد الإلكتروني بعنوان البريد الإلكتروني للمستلم في السطر .To = "عنوان البريد الإلكتروني".
4). وحدد مستلمي "نسخة إلى" و "نسخة مخفية الوجهة" كما تريد .CC = "" و نسخة مخفية الوجهة = "" أقسام.
5). أخيرًا قم بتغيير موضوع البريد الإلكتروني في السطر .Subject = "إرسال عن طريق اختبار قيمة الخلية".

3. اضغط على قديم + Q مفاتيح معًا لإغلاق ميكروسوفت فيسوال باسيك للتطبيقات نافذة.

من الآن فصاعدًا ، عندما تكون القيمة التي تدخلها في الخلية D7 أكبر من 200 ، سيتم إنشاء بريد إلكتروني بالمستلمين المحددين والجسم تلقائيًا في Outlook. يمكنك النقر فوق إرسال زر لإرسال هذا البريد الإلكتروني. انظر لقطة الشاشة:

ملحوظات:

1. يعمل رمز VBA فقط عند استخدام Outlook كبرنامج بريد إلكتروني.

2. إذا كانت البيانات المدخلة في الخلية D7 عبارة عن قيمة نصية ، فسيتم أيضًا ظهور نافذة البريد الإلكتروني.


أرسل بريدًا إلكترونيًا بسهولة عبر Outlook استنادًا إلى حقول القائمة البريدية التي تم إنشاؤها في Excel:

يوفر إرسال رسائل البريد الإلكتروني فائدة كوتولس ل إكسيل يساعد المستخدمين على إرسال البريد الإلكتروني عبر Outlook بناءً على قائمة بريدية تم إنشاؤها في Excel.
قم بتنزيله وجربه الآن! (تجربة مجانية لمدة 30 يومًا)


مقالات ذات صلة:


أفضل أدوات إنتاجية المكتب

Kutools for Excel يحل معظم مشاكلك ويزيد إنتاجيتك بنسبة 80٪

  • إعادة استخدام: أدخل بسرعة الصيغ المعقدة والرسوم البيانية وأي شيء استخدمته من قبل ؛ تشفير الخلايا مع كلمة السر إنشاء قائمة بريدية وإرسال رسائل البريد الإلكتروني ...
  • سوبر فورميولا بار (بسهولة تحرير أسطر متعددة من النص والصيغة) ؛ تخطيط القراءة (قراءة وتحرير أعداد كبيرة من الخلايا بسهولة) ؛ لصق في النطاق المصفى
  • دمج الخلايا / الصفوف / الأعمدة دون فقدان البيانات ؛ تقسيم محتوى الخلايا ؛ ادمج الصفوف / الأعمدة المكررة... منع تكرار الخلايا؛ قارن النطاقات
  • حدد مكرر أو فريد صفوف حدد صفوف فارغة (جميع الخلايا فارغة) ؛ البحث الفائق والبحث الغامض في العديد من المصنفات. تحديد عشوائي ...
  • نسخة طبق الأصل خلايا متعددة بدون تغيير مرجع الصيغة ؛ إنشاء المراجع تلقائيًا إلى أوراق متعددة أدخل الرموز النقطية، مربعات الاختيار والمزيد ...
  • استخراج النص، إضافة نص ، إزالة حسب الموضع ، إزالة الفضاء؛ إنشاء وطباعة المجاميع الفرعية لترحيل الصفحات ؛ التحويل بين محتوى الخلايا والتعليقات
  • سوبر تصفية (حفظ وتطبيق مخططات التصفية على أوراق أخرى) ؛ فرز متقدم حسب الشهر / الأسبوع / اليوم ، التكرار والمزيد ؛ مرشح خاص بواسطة bold، italic ...
  • اجمع بين المصنفات وأوراق العمل؛ دمج الجداول على أساس الأعمدة الرئيسية ؛ تقسيم البيانات إلى أوراق متعددة; تحويل دفعة xls و xlsx و PDF
  • أكثر من 300 ميزة قوية. يدعم Office / Excel 2007-2019 و 365. يدعم جميع اللغات. سهولة النشر في مؤسستك أو مؤسستك. الميزات الكاملة نسخة تجريبية مجانية لمدة 30 يومًا. ضمان استرداد الأموال لمدة 60 يومًا.
علامة تبويب kte 201905

يجلب Office Tab الواجهة المبوبة إلى Office ، ويجعل عملك أسهل بكثير

  • تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
  • فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
  • يزيد إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!
أوفيسيتاب القاع
فرز التعليقات حسب
التعليقات (290)
لا يوجد تقييم. كن أول من يقيم!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كيف ينبغي تعديل الكود لتطبيقه على نطاق كامل من الخلايا؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي ديبي ،
يرجى المحاولة أدناه رمز VBA لحل المشكلة.

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
إذا كان Target.Cells.Count> 1 ثم اخرج من Sub
إذا كان (عدم التقاطع (الهدف ، النطاق ("A1: D4")) لا شيء) و (الهدف. القيمة> 200) إذن
اتصل بـ Mail_small_Text_Outlook
إنهاء حالة
نهاية الفرعية
Sub Mail_small_Text_Outlook الفرعي ()
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
تعيين xOutApp = CreateObject ("Outlook.Application")
قم بتعيين xOutMail = xOutApp.CreateItem (0)
xMailBody = "مرحبًا" & vbNewLine & vbNewLine & _
"هذا هو السطر 1" & vbNewLine & _
"هذا هو السطر 2"
على خطأ استئناف التالي
مع xOutMail
.To = "عنوان البريد الإلكتروني للمستلم"
.CC = ""
.BCC = ""
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
. الجسم = xMailBody
.Display أو استخدام .Send
انتهت ب
على خطأ GoTo 0
تعيين xOutMail = لا شيء
تعيين xOutApp = لا شيء
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أواجه مشكلة في الحصول على هذا الرمز للمطالبة إذا تم تغيير القيمة في الخلية بشكل غير مباشر. على سبيل المثال ، إذا كان لدي معادلة Sum تقوم بتغيير هذه القيمة تلقائيًا. عندما يتم تشغيل المعادلة وتتجاوز القيمة القيمة المحددة للمطالبة بالبريد الإلكتروني ، فإنها لا تفعل ذلك ، إلا إذا قمت بتغيير الرقم فعليًا بنفسي. هل هناك طريقة لجعل رسالة البريد الإلكتروني مطالبة حتى لو تم تغييرها بشكل غير مباشر؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي الاردن ،
يمكن أن تساعدك التعليمات البرمجية VBA التالية في حل المشكلة. من فضلك لا تنسى استبدال "عنوان البريد الإلكتروني" بعنوان البريد الإلكتروني للمستلم في الرمز. شكرًا لك.

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
خافت xRgPre كنطاق
على خطأ استئناف التالي
إذا كان Target.Cells.Count> 1 ثم اخرج من Sub
تعيين xRg = النطاق ("D7")
تعيين xRgPre = xRg السوابق
إذا كانت xRg.Value> 200 ثم
إذا كان Target.Address = xRg.Address ثم
اتصل بـ Mail_small_Text_Outlook
ElseIf (ليس xRgPre لا شيء) و (تقاطع (الهدف ، xRgPre). Address = Target.Address) ثم
اتصل بـ Mail_small_Text_Outlook
إنهاء حالة
إنهاء حالة
نهاية الفرعية
Sub Mail_small_Text_Outlook الفرعي ()
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
تعيين xOutApp = CreateObject ("Outlook.Application")
قم بتعيين xOutMail = xOutApp.CreateItem (0)
xMailBody = "مرحبًا" & vbNewLine & vbNewLine & _
"هذا هو السطر 1" & vbNewLine & _
"هذا هو السطر 2"
على خطأ استئناف التالي
مع xOutMail
.To = "عنوان البريد الإلكتروني"
.CC = ""
.BCC = ""
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
. الجسم = xMailBody
.Display أو استخدام .Send
انتهت ب
على خطأ GoTo 0
تعيين xOutMail = لا شيء
تعيين xOutApp = لا شيء
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لقد قمت بتعديل الكود المقترح لمحاولة جعله يعمل مع طلبي.
تم تغيير xRg = Range ("C2: C40") وإذا كانت xRg.Value = -1.

المشكلة التي أواجهها هي في أي وقت يوجد تغيير في أي خلية وطالما أن إحدى الخلايا في النطاق الخاص بي هي = -1 ، فسوف تستدعي Mail_small_Text_Outlook.
أحاول الاتصال فقط إذا تم تغيير أي خلية في النطاق الخاص بي بشكل غير مباشر إلى -1.
كنت أتساءل أيضًا عما إذا كان من الممكن أن يفي بمعيارين وكيف يمكن ذلك.
مثل التحقق من النطاق A والنطاق B ، وإذا استوفوا معايير وظيفة الاستدعاء.

شكرا مقدما للمساعدة. أنا جديد على كل هذا ولكن القراءة من خلال هذا الموضوع جعلتني حوالي 90٪ هناك.


ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
خافت xRgPre كنطاق
على خطأ استئناف التالي
إذا كان Target.Cells.Count> 1 ثم اخرج من Sub
تعيين xRg = Range ("C2: C40")
تعيين xRgPre = xRg السوابق
إذا كانت xRg.Value = -1 ثم
إذا كان Target.Address = xRg.Address ثم
اتصل بـ Mail_small_Text_Outlook
ElseIf (ليس xRgPre لا شيء) و (تقاطع (الهدف ، xRgPre). Address = Target.Address) ثم
اتصل بـ Mail_small_Text_Outlook
إنهاء حالة
إنهاء حالة
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لقد استخدمت هذا الرمز مع التغيير الوحيد الذي قمت بتطبيقه على عمود كامل [Set xRg = Range ("D4: D13")]. يتم الآن تشغيل الحدث عند إجراء عملية حسابية بغض النظر عما إذا كان الصمام الموجود في العمود D أقل من القيمة المستهدفة. اي فكرة لماذا هذا؟


Dim Xrg كمدى
ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
خافت xRgPre كنطاق
على خطأ استئناف التالي
إذا كان Target.Cells.Count> 1 ثم اخرج من Sub
تعيين Xrg = النطاق ("D4: D13")
تعيين xRgPre = Xrg السوابق
إذا كانت Xrg.Value <1200 ثم
إذا كان Target.Address = Xrg.Address ثم
اتصل بـ Mail_small_Text_Outlook
ElseIf (ليس xRgPre لا شيء) و (تقاطع (الهدف ، xRgPre). Address = Target.Address) ثم
اتصل بـ Mail_small_Text_Outlook
إنهاء حالة
إنهاء حالة
نهاية الفرعية

Sub Mail_small_Text_Outlook الفرعي ()
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
تعيين xOutApp = CreateObject ("Outlook.Application")
قم بتعيين xOutMail = xOutApp.CreateItem (0)
xMailBody = "مرحبًا" & vbNewLine & _
"اختبار vba" _
& vbNewLine & _
"خط 2."
على خطأ استئناف التالي
مع xOutMail
. إلى = ""
.CC = ""
.BCC = ""
.Subject = "اختبار البريد الإلكتروني التلقائي"
. الجسم = xMailBody
.عرض
انتهت ب
على خطأ GoTo 0
تعيين xOutMail = لا شيء
تعيين xOutApp = لا شيء

نهاية الفرعية


شكر.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا

أواجه مشكلة لأنه يجب إضافة مستلم البريد الإلكتروني مرارًا وتكرارًا واحدًا تلو الآخر. يرجى توجيه ما إذا كان يمكن إضافة قائمة مستلمي البريد الإلكتروني إلى هذه الوظيفة حتى تقوم الوظيفة بتحديد عنوان البريد الإلكتروني من قائمة عناوين البريد الإلكتروني المقدمة أو تحميل القائمة وترسل الوظيفة البريد الإلكتروني ، المكون بالفعل إلى المستلم المطلوب.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي هنري ،
يمكن أن تساعدك التعليمات البرمجية VBA التالية في حل المشكلة. يرجى وضع برنامج VBA النصي في وحدة ورقة العمل الخاصة بك. عندما تفي القيمة في الخلية المحددة بالشرط ، سيظهر مربع حوار Kutools for Excel ، يرجى تحديد الخلايا التي تحتوي على عناوين البريد الإلكتروني للمستلمين ثم النقر فوق الزر "موافق". ثم يتم فتح رسائل البريد الإلكتروني مع المستلمين المحددين. من فضلك أرسلهم كما تحتاج.

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
إذا كان Target.Cells.Count> 1 ثم اخرج من Sub
تعيين xRg = النطاق ("D7")
إذا كانت xRg = Target And Target.Value> 200 ثم
اتصل بـ Mail_small_Text_Outlook
إنهاء حالة
نهاية الفرعية
Sub Mail_small_Text_Outlook الفرعي ()
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
خافت xRgMsg كنطاق
خافت xCell كمجموعة
تعيين 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 = ""
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
. الجسم = xMailBody
.Display أو استخدام .Send
انتهت ب
xOutApp = لا شيء
xOutMail = لا شيء
التالى
على خطأ GoTo 0
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل سيتم إرساله تلقائيًا بالبريد دون أي مقاطعة يدوية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي براهما ،
إذا كنت تريد إرسال البريد الإلكتروني مباشرةً دون عرضه ، فيرجى استبدال السطر ". العرض" بـ ". إرسال" في رمز فبا أعلاه.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، أضع نفس النص ولكنه لا يعمل ، الرجاء مساعدتي في الجزء الأول

خافت xRg كمدى

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
إذا كان Target.Cells.Count> 1 ثم اخرج من Sub
تعيين xRg = النطاق ("D7")
إذا كانت xRg = الهدف والهدف القيمة = 200 إذن
اتصل بـ Mail_small_Text_Outlook
إنهاء حالة

نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي الريحان ،
هل هناك تحذير عند تشغيل الكود؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، كيف يمكنك تعديل هذا الرمز للتحقق مما إذا كانت مجموعة الخلايا تحتوي على السلسلة "لا يوجد تطابق" وترسل بريدًا إلكترونيًا إذا كان بها.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي خوسيه،
يرجى المحاولة أدناه رمز VBA. عند تشغيل الرمز ، ينبثق مربع حوار ، يرجى تحديد النطاق الذي ستتحقق فيه من السلسلة ، ثم انقر فوق الزر "موافق". إذا لم تكن السلسلة موجودة ، فسوف تحصل على مربع حوار موجه. إذا كانت السلسلة موجودة في النطاق ، فسيتم عرض بريد إلكتروني بالمستلم والموضوع والجسم المحددين.

إرسال فرعي
أنا خافت وطويلة
خافت J بطول
خافت xRg كمدى
خافت xArr
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
Dim xFlag كما منطقي
على خطأ استئناف التالي
تعيين xRg = Application.InputBox ("الرجاء تحديد النطاق" ، "Kutools for Excel" ، Selection.Address ، ، ، ، ، ، 8)
إذا كان xRg لا شيء ، فاخرج من Sub
xArr = xRg.Value
xFlag = خطأ
بالنسبة إلى I = 1 إلى UBound (xArr)
لـ J = 1 إلى UBound (xArr ، 2)
إذا كان xArr (I، J) = "لا يوجد تطابق" إذن
xFlag = صحيح
إنهاء حالة
التالى
التالى
إذا كان xFlag ثم
تعيين xOutApp = CreateObject ("Outlook.Application")
قم بتعيين xOutMail = xOutApp.CreateItem (0)
xMailBody = "مرحبًا" & vbNewLine & vbNewLine & _
"هذا هو السطر 1" & vbNewLine & _
"هذا هو السطر 2"
مع xOutMail
.To = "عنوان البريد الإلكتروني"
.CC = ""
.BCC = ""
.Subject = "تطابق"
. الجسم = xMailBody
.Display أو استخدام .Send
انتهت ب
آخر
MsgBox "لم يتم العثور على قيمة مطابقة" ، vbInformation ، "KuTools for Excel"
إنهاء حالة
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كيف يمكنني تغيير هذا الرمز لإرسال درجات الطلاب إلى أولياء الأمور. حيث إذا كان العمود A هو التقدير والعمود B هو البريد الإلكتروني الأصلي. أريد تعبئة بريد إلكتروني لكل طالب بدرجة F.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي الصريح،
يمكن أن يساعدك رمز VBA أدناه في حل المشكلة. شكرًا لك.

Sub Mail_small_Text_Outlook الفرعي ()
خافت xRg كمدى
أنا خافت وطويلة
خافت xRows طويلة
خافت xVal كسلسلة
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
على خطأ استئناف التالي
قم بتعيين xRg = Application.InputBox ("الرجاء تحديد عمود التقدير وعمود البريد الإلكتروني (عمودين)" ، "Kutools for 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)
مع xOutMail
.to = xRg.Offset (I، 0) .Text
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
. الجسم = xMailBody
.Display أو استخدام .Send
انتهت ب
على خطأ GoTo 0
تعيين xOutMail = لا شيء
تعيين xOutApp = لا شيء
إنهاء حالة
التالى
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لدي قائمة بعناوين البريد الإلكتروني بالفعل في ملف Excel ، كيف يمكنني تعديل الرمز لاختيار عنوان البريد الإلكتروني للشخص تلقائيًا إذا كانت خليته D7> 200؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
يوم جيد،
يمكن أن تساعدك التعليمات البرمجية VBA التالية في حل المشكلة. يرجى وضع برنامج VBA النصي في وحدة ورقة العمل الخاصة بك. عندما تفي القيمة في الخلية المحددة بالشرط ، سيظهر مربع حوار Kutools for Excel ، يرجى تحديد الخلايا التي تحتوي على عناوين البريد الإلكتروني للمستلمين ثم النقر فوق الزر "موافق". ثم يتم فتح رسائل البريد الإلكتروني مع المستلمين المحددين. من فضلك أرسلهم كما تحتاج.

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
إذا كان Target.Cells.Count> 1 ثم اخرج من Sub
تعيين xRg = النطاق ("D7")
إذا كانت xRg = Target And Target.Value> 200 ثم
اتصل بـ Mail_small_Text_Outlook
إنهاء حالة
نهاية الفرعية
Sub Mail_small_Text_Outlook الفرعي ()
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
خافت xRgMsg كنطاق
خافت xCell كمجموعة
تعيين 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 = ""
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
. الجسم = 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 شهرًا إلى عنوان بريد إلكتروني يفيد بأن المستند بحاجة إلى المراجعة. لدي الآن لإرسال بريد إلكتروني تلقائيًا عن طريق تغيير العرض إلى. إرسال ويعمل بشكل رائع كما هو مكتوب ، ولكن ما الذي أحتاج إلى تغييره لاستخدام وظيفة التاريخ بدلاً من الرقم الصحيح ؟؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كيف يمكنك إضافة نطاق متعدد إلى "Set xRg = Range (" D7 ")". أريد تحريره وإضافة Range ("D7: F7"). ومع ذلك ، أتلقى خطأ في Run Time Error 13 ، Type Mismatch وهو يأخذني إلى If xRg = Target And Target.Value> 2 ثم.


كيف يمكنني حل هذه المشكلة؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
يوم جيد،
يرجى المحاولة أدناه رمز VBA لحل المشكلة.

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
إذا كان Target.Cells.Count> 1 ثم اخرج من Sub
إذا كان (عدم التقاطع (الهدف ، النطاق ("D7: F7")) لا شيء) و (الهدف. القيمة> 200) إذن
اتصل بـ Mail_small_Text_Outlook
إنهاء حالة
نهاية الفرعية
Sub Mail_small_Text_Outlook الفرعي ()
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
تعيين xOutApp = CreateObject ("Outlook.Application")
قم بتعيين xOutMail = xOutApp.CreateItem (0)
xMailBody = "مرحبًا" & vbNewLine & vbNewLine & _
"هذا هو السطر 1" & vbNewLine & _
"هذا هو السطر 2"
على خطأ استئناف التالي
مع xOutMail
.To = "عنوان البريد الإلكتروني للمستلم"
.CC = ""
.BCC = ""
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
. الجسم = xMailBody
.Display أو استخدام .Send
انتهت ب
على خطأ GoTo 0
تعيين xOutMail = لا شيء
تعيين xOutApp = لا شيء
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عملت بشكل جيد .. شكرا .. :) :)
تم تصغير هذا التعليق بواسطة المشرف على الموقع
إنه لا يعمل بالنسبة لي لأن القيمة في D7 هي نتيجة شكلية. ماذا لو احتوت الخلية D7 على صيغة ، على سبيل المثال D7 = 2 * 120؟ لا يزال يفي بالشرط ولكن لا شيء يحدث. الرجاء المساعدة
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كيفية إيقاف تشغيل الكود ، أي عدم مطالبة البريد الإلكتروني عندما لا يتم استيفاء الشرط؟

حتى عندما تكون D7 <200 ، ما زلت أتلقى رسالة بريد إلكتروني.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
يوم جيد،
يتم تحديث الكود في المنشور مع حل المشكلة. شكرا لك على تعليقك.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
Hi

شكرًا جزيلاً على نشر رمز VBA وإرشاداته. عندما وجدتها شعرت أنني فزت باليانصيب. ومع ذلك ، فأنا عالق في شيء ما لذا آمل أن تتمكن من المساعدة (أنا جديد في VBA ، لدي فقط فهم أساسي للغاية).

لقد قمت بنسخ الكود وقمت بتغيير الخلية وقيمة الخلية للاختيار من بين نطاق إذا تم استيفاء أحد المعايير. لقد جربت واختبرت وهي تعمل وتلقيت بريدًا إلكترونيًا للتوقعات بناءً على المعايير.

1) ومع ذلك ، لا يمكنني معرفة كيفية تشغيل رمز VBA تلقائيًا عندما أقوم بفتح ورقة عمل Excel ، بدلاً من الاضطرار إلى النقر فوق تطبيق VBA وتحديد التشغيل. هل يمكن أن تنصح إذا كانت هناك مطالبة إضافية للكتابة في رمز VBA أعلاه والتي ستفعل ذلك أو هل يجب أن يتم بشكل منفصل.

2) هناك أيضًا طريقة للحصول على رمز VBA لإرسال بريد إلى شخص إذا كان تاريخ الاستحقاق نعم لعنصر معين كما هو موضح في المثال أدناه.
عمود البريد الإلكتروني المخفي
الاسم

إجراء
نعم ، الإجراء رقم 1 تاريخ الاستحقاق
رقم الإجراء. 2 تاريخ الاستحقاق لا

سيكون لدي العديد من الأشخاص في جدول البيانات (يمر أفقيًا على التوالي) ويمكن تمييز "نعم" لمختلف الإجراءات المتأخرة (المدرجة عموديًا في العمود أ. هل هناك طريقة لإنشاء كود VBA يتم تشغيله لشيء مثل هذا - إذا كانت الإجابة "نعم" لـ "الشخص 1" ، فقم بإرسال بريد إلكتروني إلى "الشخص 1" مع "الإجراء رقم" (أو الأرقام) وتاريخ (تواريخ) الاستحقاق. القدرة على إدراج جميع الإجراءات وتواريخ استحقاقها اللاحقة في البريد الإلكتروني.

لا أمانع إذا اضطررت إلى تعيين رمز VBA منفصل لكل شخص طالما أنه أرسل بريدًا بجميع المستندات المتأخرة لهذا الشخص وتواريخ الاستحقاق.

آمل أن تتمكن من المساعدة
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزتي آن،
الرجاء محاولة رمز VBA أدناه. شكرا لك على تعليقك.

Sub Mail_small_Text_Outlook الفرعي ()
خافت xRg كمدى
خافت xCell كمجموعة
أنا خافت وطويلة
خافت xRows طويلة
خافت xCols طالما
خافت xVal كسلسلة
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت 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
إلى = xCell.Offset (0، -4)
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
. الجسم = xMailBody
.Display أو استخدام .Send
انتهت ب
على خطأ GoTo 0
تعيين xOutMail = لا شيء
تعيين xOutApp = لا شيء
إنهاء حالة
التالى
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كريستال،

هذا يحل محل الكود التالي:

البريد الإلكتروني الفرعي ()

خافت xRg كمدى

خافت xRgEach كنطاق

خافت xEmail_Subject ، xEmail_Send_Form ، ؛ إلخ.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أين بالضبط نقوم بإدخال هذا الرمز؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
يوم جيد،
تحتاج إلى وضع الكود في نافذة كود ورقة العمل.
افتح نافذة Microsoft Visual Basic for Applications ، وانقر نقرًا مزدوجًا فوق اسم الورقة في الجزء الأيمن لفتح محرر التعليمات البرمجية.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا هناك،


أواجه حاليًا مشكلة صغيرة في هذا الترميز (جديد على هذا - ربما قضم أكثر مما يمكنني مضغه)


لدي حاليًا جدول بيانات يحتوي على ما يلي وأحتاج إلى مساعدة لأتمتة وإرسال البريد الإلكتروني للخطأ الموجود في ممتلكاتنا لأعمالنا


أحتاج حاليًا إلى رمز يستخدم البيانات التالية:


1) العنوان والمشكلة (خليتان "عامتان" تم دمجهما عبر ((في الخلية D2)) "= = CONCAT (B1،" "C1،)"
سيكون العنوان في B1 دائمًا هو نفسه (أكثر أو أقل)
بينما سيتغير C1 دائمًا اعتمادًا على الخطأ في الممتلكات.


2) بريد إلكتروني يتم إرساله عن طريق عنوان البريد الإلكتروني نفسه ، (هل يمكنني استخدام $ E $ 1 أو يجب أن أستخدم E1 - E1. على سبيل المثال) أو يمكنني فقط إدخال "TheEmailAdress @ .co.uk" في سطر التعليمات البرمجية


3) نص البريد الإلكتروني المراد تعبئته بطريقة مماثلة للنقطة 1) ...... ((في الخلية F1)) "= CONCAT (G1،" "، H1)
سوف تتغير باستمرار لأنها تمثل الشركة (G1) وما يفعلونه ، التثبيت ، الاقتباس إلخ (H1)

4) المشغل لإرسال البريد الإلكتروني ، سأكون الرقم 7 ، يتم تحديث الورقة يوميًا (7 أيام في الأسبوع)
على هذا النحو ، أحتاج إلى المشغل لإرسال البريد الإلكتروني في اليوم السابع ، ولكن ليس مثل يوم 7 ، 8 ، 9+ إلخ. وليس قبل مثل 10-1 ، سيكون هذا في A6: A 4+ (لأننا نتوسع باستمرار


4) لقد استخدمت مقتطفات صغيرة من مستخدمين آخرين ذكروا استخدام قائمة للمشغل لإرسال البريد الإلكتروني ، لكني لست متأكدًا من أنها كانت صحيحة بنسبة 100٪ ، لكنني سأحتاج إليها لإجراء مسح ضوئي على الرغم من كل Collum A ... A4: A100
وإذا كان هناك 47 خلية تحتوي على "7" فقط ، فسيتم إرسال 47 بريدًا إلكترونيًا


شكرًا جزيلاً لك على القراءة وآمل أن تتمكن من المساعدة :)
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي مارتن ،
آسف لا يمكن أن تساعد في هذا.
يمكنك نشر سؤالك في منتدانا: https://www.extendoffice.com/forum.html للحصول على المزيد من دعم Excel من فريقنا الفني.
شكرا لتعليقك.

تحياتي الحارة،
كريستال
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،


ماذا لو أردت إرسال البريد الإلكتروني بناءً على كلمة "مكتمل" المضافة إلى العمود L؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي جيسي ،
يمكن أن تساعدك التعليمات البرمجية VBA التالية في حل المشكلة. شكرا لك على تعليقك.

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
إذا كان Target.Cells.Count> 1 ثم اخرج من Sub
إذا كان (ليس التقاطع (الهدف ، النطاق ("L: L")) لا شيء) و (Target.Value = "مكتمل") إذن
اتصل بـ Mail_small_Text_Outlook
إنهاء حالة
نهاية الفرعية
Sub Mail_small_Text_Outlook الفرعي ()
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
تعيين xOutApp = CreateObject ("Outlook.Application")
قم بتعيين xOutMail = xOutApp.CreateItem (0)
xMailBody = "مرحبًا" & vbNewLine & vbNewLine & _
"هذا هو السطر 1" & vbNewLine & _
"هذا هو السطر 2"
على خطأ استئناف التالي
مع xOutMail
.To = "عنوان البريد الإلكتروني للمستلم"
.CC = ""
.BCC = ""
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
. الجسم = xMailBody
.Display أو استخدام .Send
انتهت ب
على خطأ GoTo 0
تعيين xOutMail = لا شيء
تعيين xOutApp = لا شيء
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،
أود أن يظهر Outlook فقط عندما تحتوي البيانات التي قمت بلصقها في النطاق ("D7: F7") على صفر واحد أو فارغ.
لقد قمت بإزالة سطر "If Target.Cells.Count> 1 ثم Exit Sub" والآن يتم تشغيل Outlook دائمًا عندما ألصق أي مجموعة من القيم في الخلايا D7: F7.

مساعدة.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي جان ،
يمكن أن يساعدك البرنامج النصي التالي في حل المشكلة. شكرا لك على تعليقك.

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
على خطأ استئناف التالي
إذا كان Target.Address = Range ("D7: F7"). العنوان بعد ذلك
مع التطبيق
إذا كان .CountIf (الهدف ، "")> 0 أو .CountIf (الهدف ، 0)> 0 ثم
تعيين xOutApp = CreateObject ("Outlook.Application")
قم بتعيين xOutMail = xOutApp.CreateItem (0)
مع xOutMail
.To = "عنوان البريد الإلكتروني"
.CC = ""
.BCC = ""
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
.Body = "مرحبًا"
.Display أو استخدام .Send
انتهت ب
على خطأ GoTo 0
تعيين xOutMail = لا شيء
تعيين xOutApp = لا شيء
إنهاء حالة
انتهت ب
إنهاء حالة
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لذلك استخدمت تعديلك لتضمين نطاقات خلايا ولكن (إذا كنا نستخدم مثال ورقة العمل) كنت أتساءل عن كيفية إضافة نوع الفاكهة والتاريخ والكمية إلى البريد الإلكتروني بتنسيق HTML من ورقة العمل إذا كانت تناسب المعايير لديك بريد إلكتروني تم إنشاؤه. هكذا سيقول

"أهلاً،"

اسم الفاكهة من الخلية "يجب إعادته إلى الطلب السابق لأنه اعتبارًا من تاريخ الطلب:" تاريخ الطلب من الخلية "لدينا هذا المبلغ:" الكمية من الخلية.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا Noemi ،
من فضلك جرب هذا VBA Scrip.

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
خافت xRg كمدى
خافت I ، J ، K وطولها
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
على خطأ استئناف التالي
If Target.Address = Range ("D7") ، ثم العنوان
مع التطبيق
إذا كان هو رقم (الهدف. القيمة) والهدف. القيمة> 200 ثم
قم بتعيين xRg = Application.InputBox ("الرجاء تحديد نطاق الخلايا الذي ستعرضه في نص البريد :" ، "KuTools for Excel" ، Selection.Address ، ، ، ، ، 8)
إذا كان xRg لا شيء ، فاخرج من Sub
بالنسبة إلى I = 1 إلى xRg.Rows.Count
من أجل J = 1 إلى xRg.Rows (I)
من أجل K = 1 إلى xRg.ows (I) .Columns (J)
xMailBody = xMailBody & "" & xRg.Rows (I) .Columns (J) .Cells (K) .Text
التالى
التالى
xMailBody = xMailBody & vbNewLine
التالى
تعيين xOutApp = CreateObject ("Outlook.Application")
قم بتعيين xOutMail = xOutApp.CreateItem (0)
مع xOutMail
.To = "عنوان البريد الإلكتروني"
.CC = ""
.BCC = ""
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
.Body = "مرحبًا" & vbNewLine & xMailBody
.Display أو استخدام .Send
انتهت ب
على خطأ GoTo 0
تعيين xOutMail = لا شيء
تعيين xOutApp = لا شيء
إنهاء حالة
انتهت ب
إنهاء حالة
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا كريستال
شكرًا على الرموز الخاصة بك ، يرجى إرسال الرموز للحصول على التفاصيل الموضحة أدناه ، إن أمكن

إذا كان لدينا من 8 إلى 9 ألوان باستخدام أنواع مختلفة من انتهاء الصلاحية مثل تاريخ انتهاء صلاحية جواز السفر وتاريخ انتهاء صلاحية رخصة القيادة وتاريخ انتهاء صلاحية تسجيل السيارة وتاريخ انتهاء صلاحية تصريح الدخول وغير ذلك ، ويجب إرسال التنبيه بالبريد إلى 5 أشخاص فقط.

مثل ورقة التاريخ الخاصة بنا مع أكثر من 300 موظف ، يجب إرسال تاريخ انتهاء الصلاحية وانتهاء الصلاحية خلال 15 يومًا باللون الأحمر ويجب إرسال تنبيه عبر البريد الإلكتروني.

قم بالمطلوب رجاءا

شكرا مقدما
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،
لقد نشرنا مقالاً "كيف نرسل بريدًا إلكترونيًا إذا تم الوفاء بتاريخ الاستحقاق في Excel؟"
يمكنك معرفة ما إذا كانت هناك إجابات في هذه المقالة. يرجى اتباع هذا الرابط لفتح المقال: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
شكرا.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحباً - إذا أردت الإرسال إلى بريد إلكتروني من قائمة بدلاً من وضع إضافة بريد إلكتروني فعلية في الكود ، فهل هذا ممكن؟ شكرًا
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،
يرجى المحاولة أدناه رمز VBA ، عندما تفي الخلية المحددة بالشرط ، سينبثق مربع حوار ، يرجى تحديد الخلية التي تحتوي على عنوان البريد الإلكتروني الذي سترسل إليه البريد الإلكتروني. أتمنى أن تساعد. شكرًا لك.

ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
إذا كان Target.Cells.Count> 1 ثم اخرج من Sub
تعيين xRg = النطاق ("D7")
إذا كانت xRg = Target And Target.Value> 200 ثم
اتصل بـ Mail_small_Text_Outlook
إنهاء حالة
نهاية الفرعية
Sub Mail_small_Text_Outlook الفرعي ()
خافت xOutApp ككائن
تعتيم xOutMail ككائن
خافت xMailBody كسلسلة
خافت xRgMsg كنطاق
خافت xCell كمجموعة
تعيين 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 = ""
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
. الجسم = xMailBody
.Display أو استخدام .Send
انتهت ب
xOutApp = لا شيء
xOutMail = لا شيء
التالى
على خطأ GoTo 0
نهاية الفرعية
لا توجد تعليقات منشورة هنا حتى الآن
عرض المزيد
اترك تعليقاتك
النشر كضيف
×
قيم المنشور:
0   الشخصيات
المواقع المقترحة