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

كيفية إرسال بريد إلكتروني إذا تم الوفاء بتاريخ الاستحقاق في Excel؟

كما هو موضح في لقطة الشاشة أدناه ، إذا كان تاريخ الاستحقاق في العمود C أقل من أو يساوي 7 أيام (على سبيل المثال ، التاريخ الحالي هو 2017/9/13) ، يتم إرسال بريد إلكتروني إلى المستلم المحدد في العمود A و يتم عرض المحتوى المحدد في العمود B في نص البريد الإلكتروني. كيف يمكنك أن تفعل لتحقيق ذلك؟ توفر هذه المقالة رمز VBA لمساعدتك في إنجاز هذه المهمة.

أرسل بريدًا إلكترونيًا إذا تم استيفاء تاريخ الاستحقاق برمز VBA


أرسل بريدًا إلكترونيًا إذا تم استيفاء تاريخ الاستحقاق برمز VBA

يرجى القيام بما يلي لإرسال تذكير بالبريد الإلكتروني إذا تم الوفاء بتاريخ الاستحقاق في Excel.

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

2. في ال ميكروسوفت فيسوال باسيك للتطبيقات نافذة ، الرجاء الضغط إدراج > وحدة. ثم انسخ والصق رمز فبا أدناه في نافذة الوحدة النمطية.

كود فبا: أرسل بريدًا إلكترونيًا إذا كان تاريخ الاستحقاق مغلقًا في إكسيل

Public Sub CheckAndSendMail()
'Updated by Extendoffice 2018/11/22
    Dim xRgDate As Range
    Dim xRgSend As Range
    Dim xRgText As Range
    Dim xRgDone As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xLastRow As Long
    Dim vbCrLf As String
    Dim xMailBody As String
    Dim xRgDateVal As String
    Dim xRgSendVal As String
    Dim xMailSubject As String
    Dim i As Long
    On Error Resume Next
    Set xRgDate = Application.InputBox("Please select the due date column:", "KuTools For Excel", , , , , , 8)
    If xRgDate Is Nothing Then Exit Sub
    Set xRgSend = Application.InputBox("Please select the recipients?email column:", "KuTools For Excel", , , , , , 8)
    If xRgSend Is Nothing Then Exit Sub
    Set xRgText = Application.InputBox("Select the column with reminded content in your email:", "KuTools For Excel", , , , , , 8)
    If xRgText Is Nothing Then Exit Sub
    xLastRow = xRgDate.Rows.count
    Set xRgDate = xRgDate(1)
    Set xRgSend = xRgSend(1)
    Set xRgText = xRgText(1)
    Set xOutApp = CreateObject("Outlook.Application")
    For i = 1 To xLastRow
        xRgDateVal = ""
        xRgDateVal = xRgDate.Offset(i - 1).Value
        If xRgDateVal <> "" Then
        If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
            xRgSendVal = xRgSend.Offset(i - 1).Value
            xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
            vbCrLf = "<br><br>"
            xMailBody = "<HTML><BODY>"
            xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
            xMailBody = xMailBody & "Text : " & xRgText.Offset(i - 1).Value & vbCrLf
            xMailBody = xMailBody & "</BODY></HTML>"
            Set xMailItem = xOutApp.CreateItem(0)
            With xMailItem
                .Subject = xMailSubject
                .To = xRgSendVal
                .HTMLBody = xMailBody
                .Display
                '.Send
            End With
            Set xMailItem = Nothing
        End If
    End If
    Next
    Set xOutApp = Nothing
End Sub

ملاحظة: الخط إذا كان CDate (xRgDateVal) - التاريخ <= 7 و CDate (xRgDateVal) - التاريخ> 0 ثم في رمز VBA يعني أن تاريخ الاستحقاق يجب أن يكون أكبر من يوم واحد وأقل من أو يساوي 1 أيام. يمكنك تغييره كما تريد.

3. صحافة ال مفتاح F5 لتشغيل الكود. في أول ظهور كوتولس ل إكسيل في مربع الحوار ، يرجى تحديد نطاق عمود تاريخ الاستحقاق ثم النقر فوق OK زر. انظر لقطة الشاشة:

4. ثم الثانية كوتولس ل إكسيل ينبثق مربع الحوار ، يرجى تحديد نطاق العمود المقابل الذي يحتوي على عناوين البريد الإلكتروني للمستلمين ، وانقر فوق OK زر. انظر لقطة الشاشة:

5. في الماضي كوتولس ل إكسيل ، حدد المحتوى الذي تريد عرضه في نص البريد الإلكتروني ، ثم انقر فوق OK .

بعد ذلك ، سيتم إنشاء بريد إلكتروني تلقائيًا مع المستلم المحدد والموضوع والجسم المدرجين إذا كان تاريخ الاستحقاق في العمود C أقل من أو يساوي 7 أيام. الرجاء الضغط على إرسال زر لإرسال البريد الإلكتروني.

ملاحظة:

1. كل بريد إلكتروني تم إنشاؤه يتوافق مع تاريخ استحقاق. على سبيل المثال ، إذا كانت هناك ثلاثة تواريخ استحقاق تفي بالمعايير ، فسيتم إنشاء ثلاث رسائل بريد إلكتروني تلقائيًا.

2. لن يتم تشغيل هذا الرمز إذا لم تكن هناك تواريخ تفي بالمعايير.

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


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


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

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

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

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

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


كيف يمكنك إضافة مدخلات Cc أو عدة مستلمين؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا براندون ،

آسف للتعليق على منشورك دون إجابة ولكن هل تمكنت من الحصول على رمز VBA لإرسال بريد إلكتروني؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لقد استخدمت رمز VBA الخاص بك لإرسال رسائل البريد الإلكتروني بناءً على قيمة الخلية ولكنها لا تعمل.
كل شيء حتى الخطوة 5 يعمل ولكن لا يتم إرسال بريد إلكتروني. يمكن لأي شخص أن يساعدني في ذلك؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
Me viene muy bien gracias por el aporte، solo me falta como puedo hacerlo autoamente sin necesidad de hacerlo manualmente el envio del correo.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أدى هذا الرمز إلى تجميد برنامج Excel الخاص بي عند تشغيله. هل الذاكرة مكثفة؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا روبرت،
المشكلة التي ذكرتها لا تظهر في حالتي. هل يمكنني الحصول على إصدار Office الخاص بك؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل يمكننا فقط إدخال التفاصيل مرة واحدة ويمكن إرسال رسائل البريد الإلكتروني تلقائيًا ، بدلاً من الحاجة دائمًا إلى تحديد الأعمدة؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا ضياء ،
إذا كنت لا تريد تحديد الأعمدة يدويًا ، فالرجاء تطبيق رمز VBA أدناه.
ملاحظة: ما عليك سوى تحديد عمود تواريخ الاستحقاق بعد تطبيق الكود.

Public Sub CheckAndSendMail ()
'تم التحديث بواسطة Extendoffice 2017 / 9 / 14
خافت xRg التاريخ كنطاق
خافت xRg إرسال كمدى
خافت xRgText كنطاق
خافت xRg تم تنفيذه كنطاق
خافت xOutApp ككائن
خافت xMailItem ككائن
خافت xLastRow طويل
خافت vbCrLf كسلسلة
خافت xMailBody كسلسلة
خافت xRgDateVal كسلسلة
خافت xRgSendVal كسلسلة
خافت xMailSubject كسلسلة
أنا خافت وطويلة
على خطأ استئناف التالي
Set xRgDate = Application.InputBox ("الرجاء تحديد عمود تاريخ الاستحقاق:" ، "KuTools For Excel" ، ، ، ، ، ، 8)
إذا كان xRgDate لا شيء ، فاخرج من Sub
xLastRow = xRgDate.Rows.Count
تعيين xRgDate = xRgDate (1)
تعيين xRgSend = xRgSend (1)
تعيين xRgText = xRgText (1)
تعيين xOutApp = CreateObject ("Outlook.Application")
لأني = 1 إلى xLastRow
xRgDateVal = xRgDate.Offset (I - 1) .Value
إذا كان CDate (xRgDateVal) - التاريخ <= 7 و CDate (xRgDateVal) - التاريخ> 0 ثم
xRgSendVal = xRgSend.Offset (I - 1) .Value
xMailSubject = xRgText.Offset (I - 1) .Value & "on" & xRgDateVal
vbCrLf = "

"
xMailBody = "مرحبًا" & vbNewLine & vbNewLine & _
"هذا هو السطر 1" & vbNewLine & _
"هذا هو السطر 2"
قم بتعيين xMailItem = xOutApp.CreateItem (0)
مع xMailItem
.To = "عنوان البريد الإلكتروني"
.CC = ""
.BCC = ""
.Subject = "إرسال عن طريق اختبار قيمة الخلية"
. الجسم = xMailBody
.Display أو استخدام .Send
انتهت ب
تعيين xMailItem = لا شيء
إنهاء حالة
التالى
تعيين xOutApp = لا شيء
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،
أنا أيضًا مبتدئ إلى حد كبير وأود أن أطرح سؤالًا آخر على Sub الرائع الخاص بك.

كيف يمكنني إرسال بريد إلكتروني فقط إذا كان عنوان بريد معين في الخلية المعنية؟

أحتاج إلى هذا ، لأنني في أداة Excel الخاصة بي قمت بتنفيذ بعض الأزرار لكل شخص يحتاج إلى تذكير.

شكرا جزيلا لك مقدما!!

توماس
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا توماس،
لقد نشرنا مقالاً "كيف ترسل بريدًا إلكترونيًا إلى عناوين البريد الإلكتروني المحددة في الخلايا في Excel؟"
https://www.extendoffice.com/documents/excel/4717-excel-macro-send-email-to-address-in-cells.html
ربما يمكنك أن تجد الحل الخاص بك في هذه المقالة.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أحتاج إلى هذا للعمل عبر جميع أوراق العمل في مصنف ، سيتم إدخال التاريخ المستقبلي يدويًا في نفس الخلية في كل ورقة ويتم إنشاء أوراق جديدة يوميًا. أحتاج أيضًا إلى اسم ورقة العمل في البريد الإلكتروني حتى أعرف الورقة المستحقة
تم تصغير هذا التعليق بواسطة المشرف على الموقع
آسف لا أستطيع مساعدتك في هذا.
مرحبًا بك لنشر أي سؤال حول Excel في منتدانا: https://www.extendoffice.com/forum.html. ستحصل على المزيد من دعم Excel من المحترفين أو محبي Excel الآخرين.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لا تجعلها تعمل. باستخدام Office 365 لذلك يجب أن يكون Outlook و Excel محكمين بدرجة كافية. كما هو الحال في المنشور من "schou" قبل 4 مونس ، فإنه يعمل حتى الخطوة 5 ولكن بعد ذلك لا شيء.
حل لهذا؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لقد حصلت على التفوق لإرسال البريد الإلكتروني ، ولكن هل يمكنني تعيين هذا بحيث يرسل بريدًا إلكترونيًا في كل مرة أقوم فيها بفتح برنامج Excel بدلاً من تحديد الأعمدة في كل مرة.

لديّ مصنف يحتوي على 24 صفحة ، لذا فإنني أتطلع إلى إرسال بريد إلكتروني تلقائيًا عند فتح المصنف.


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


ماكرو رائع لكن أود أن أسأل شيئًا ما - إذا كان لديك شخص ما في القائمة دون أي تاريخ ، كيف تعدل رمز vba لاستبعاد هذا الرجل؟ الآن يقوم الكود بإنشاء رسائل بريد إلكتروني حتى للرجال دون أي تاريخ.


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

Public Sub CheckAndSendMail ()
'تم التحديث بواسطة Extendoffice 2018 / 11 / 22
خافت xRg التاريخ كنطاق
خافت xRg إرسال كمدى
خافت xRgText كنطاق
خافت xRg تم تنفيذه كنطاق
خافت xOutApp ككائن
خافت xMailItem ككائن
خافت xLastRow طويل
خافت vbCrLf كسلسلة
خافت xMailBody كسلسلة
خافت xRgDateVal كسلسلة
خافت xRgSendVal كسلسلة
خافت xMailSubject كسلسلة
خافت أنا طويلة
على خطأ استئناف التالي
Set xRgDate = Range ("C2: C4") 'يرجى الرجوع إلى عمود تاريخ الاستحقاق
إذا كان xRgDate لا شيء ، فاخرج من Sub
Set xRgSend = Range ("A2: A4") 'يرجى الرجوع إلى المستلمين؟ عمود البريد الإلكتروني
إذا كان xRgSend لا شيء ، فاخرج من Sub
اضبط xRgText = Range ("B2: B4") أدخل العمود الذي يحتوي على محتوى مذكّر في بريدك الإلكتروني
إذا كان xRgText لا شيء ، فقم بالخروج من Sub
xLastRow = xRgDate.Rows.count
تعيين xRgDate = xRgDate (1)
تعيين xRgSend = xRgSend (1)
تعيين xRgText = xRgText (1)
تعيين xOutApp = CreateObject ("Outlook.Application")
لأني = 1 إلى xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset (i - 1) .Value
إذا كان xRgDateVal <> "" ثم
إذا كان CDate (xRgDateVal) - التاريخ <= 7 و CDate (xRgDateVal) - التاريخ> 0 ثم
xRgSendVal = xRgSend.Offset (i - 1) .Value
xMailSubject = xRgText.Offset (i - 1) .Value & "on" & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "عزيزي" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "النص:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""
قم بتعيين xMailItem = xOutApp.CreateItem (0)
مع xMailItem
. الموضوع = xMailSubject
إلى = xRgSendVal
.HTMLBody = xMailBody
.عرض
'.يرسل
انتهت ب
تعيين xMailItem = لا شيء
إنهاء حالة
إنهاء حالة
التالى
تعيين xOutApp = لا شيء
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي كريتال ،

شكرا لمشاركتك.

أنا مبتدئ ولدي مشكلة مع التعليمات البرمجية.

xMailBody = ""
xMailBody = xMailBody & "عزيزي" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "النص:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""

النص لا يذهب إلى سطر جديد.
هل باستطاعتك رجاءا المساعدة.

شكر
تم تصغير هذا التعليق بواسطة المشرف على الموقع
ني نيتي
تحتاج إلى إضافة السطر vbCrLf = " "أمام نزلات البرد.
مثل:
vbCrLf = " "
xMailBody = ""
xMailBody = xMailBody & "عزيزي" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "النص:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي كريستال ، أثناء تحديد عمود التواريخ ، هل يمكن تحديد عدة خلايا في أعمدة مختلفة؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،
السيد كريستال ، في محادثتك الأخيرة مع السيد إيفان ، طلب منك الرمز لإرسال بريد إلكتروني في كل مرة يتم فيها فتح جدول البيانات بدلاً من إدخال الرموز في كل مرة.
أحتاج نفس الرمز ، نفس الموقف ، هل يمكنك المساعدة من فضلك؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
بشكل صحيح ، لم يكن الأمر مع السيد إيفان ، ولكن مع السيد أوستن.
شكرا.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، أنا أستخدم نسخة معدلة من هذا الرمز ، وأنا جديد إلى حد ما على VBA. كنت أشعر بالفضول لمعرفة ما إذا كان هناك احتمال لوقت إرسال البريد الإلكتروني ، وأن الماكرو سيكون قادرًا على وضع علامة X ، أو إذا كان شخص ما قد اكتمل ، فلن يرسل هذا البريد الإلكتروني. آمل أن يكون هذا كل معنى. هو موضع تقدير كبير جدا أي مساعدة.

خلفية صغيرة ، أستخدم هذه الأداة لإجراء فحص لتاريخ الاستحقاق في 30 يومًا و 60 يومًا ومتأخرًا. أريد إرسال بريد إلكتروني واحد في غضون 1 يومًا ، ورسالة واحدة في 30 يومًا ، ثم تأخرت في الاستحقاق أيضًا. أقوم بتشغيل هذا البرنامج النصي VB الذي كتبته ، حتى أتمكن من تشغيله تلقائيًا يوميًا. شكرًا!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، أنا أستخدم نسخة معدلة من هذا الرمز ، وأنا جديد إلى حد ما على VBA. كنت أشعر بالفضول لمعرفة ما إذا كان هناك احتمال لوقت إرسال البريد الإلكتروني ، وأن الماكرو سيكون قادرًا على وضع علامة X ، أو إذا كان شخص ما قد اكتمل ، فلن يرسل هذا البريد الإلكتروني. آمل أن يكون هذا كل معنى. هو موضع تقدير كبير جدا أي مساعدة. خلفية صغيرة ، أستخدم هذه الأداة لإجراء فحص لتاريخ الاستحقاق في 30 يومًا و 60 يومًا ومتأخرًا. أريد إرسال بريد إلكتروني واحد في غضون 1 يومًا ، ورسالة واحدة في 30 يومًا ، ثم تأخرت في الاستحقاق أيضًا. أقوم بتشغيل هذا البرنامج النصي VB الذي كتبته ، حتى أتمكن من تشغيله تلقائيًا يوميًا. شكرًا!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا يا سيدي،

هذا مفيد جدا أحتاج إلى تعزيزين إضافيين في نفس الرموز. لا بد لي من النقر فوق زر الإرسال في كل مرة ، فلا بأس طالما أن لدي 2 رسائل بريد إلكتروني لإرسالها ، فماذا لو قمت بإرسال> 10 بريدًا إلكترونيًا في يوم واحد. لذا يرجى إعطائي رمزًا لإرسال بريد إلكتروني تلقائيًا عند تحديد تاريخ الاستحقاق ، والمستلم ، والموضوع وما إلى ذلك.

كما يرجى تزويدني بالرمز لإضافة خيار "CC" أيضًا


شكر

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

Public Sub CheckAndSendMail ()
'تم التحديث بواسطة Extendoffice 2018 / 11 / 22
خافت xRg التاريخ كنطاق
خافت xRg إرسال كمدى
خافت xRgText كنطاق
خافت xRg تم تنفيذه كنطاق
خافت xOutApp ككائن
خافت xMailItem ككائن
خافت xLastRow طويل
خافت vbCrLf كسلسلة
خافت xMailBody كسلسلة
خافت xRgDateVal كسلسلة
خافت xRgSendVal كسلسلة
خافت xMailSubject كسلسلة
خافت أنا طويلة
على خطأ استئناف التالي
Set xRgDate = Application.InputBox ("الرجاء تحديد عمود تاريخ الاستحقاق:" ، "KuTools For Excel" ، ، ، ، ، ، 8)
إذا كان xRgDate لا شيء ، فاخرج من Sub
Set xRgSend = Application.InputBox ("الرجاء تحديد المستلمين؟ عمود البريد الإلكتروني:" ، "KuTools For Excel" ، ، ، ، ، ، 8)
إذا كان xRgSend لا شيء ، فاخرج من Sub
Set xRgCC = Application.InputBox ("يرجى تحديد مستلمي CC؟ عمود البريد الإلكتروني:" ، "KuTools For Excel" ، ، ، ، ، ، 8)
إذا كان xRgCC لا شيء ، فقم بالخروج من Sub
تعيين xRgText = Application.InputBox ("حدد العمود الذي يحتوي على محتوى تذكير في بريدك الإلكتروني:" ، "KuTools For Excel" ، ، ، ، ، ، 8)
إذا كان xRgText لا شيء ، فقم بالخروج من Sub
xLastRow = xRgDate.Rows.Count
تعيين xRgDate = xRgDate (1)
تعيين xRgSend = xRgSend (1)
ضبط xRgCC = xRgCC (1)
تعيين xRgText = xRgText (1)
تعيين xOutApp = CreateObject ("Outlook.Application")
لأني = 1 إلى xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset (i - 1) .Value
إذا كان xRgDateVal <> "" ثم
إذا كان CDate (xRgDateVal) - التاريخ <= 7 و CDate (xRgDateVal) - التاريخ> 0 ثم
xRgSendVal = xRgSend.Offset (i - 1) .Value
xRgCCVal = xRgCC.Offset (i - 1) .Value
xMailSubject = xRgText.Offset (i - 1) .Value & "on" & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "عزيزي" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "النص:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""
قم بتعيين xMailItem = xOutApp.CreateItem (0)
مع xMailItem
. الموضوع = xMailSubject
إلى = xRgSendVal
.Cc = xRgCCVal
.HTMLBody = xMailBody
.إرسال
انتهت ب
تعيين xMailItem = لا شيء
إنهاء حالة
إنهاء حالة
التالى
تعيين xOutApp = لا شيء
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا كريستال ،

شكرا على الرموز لأنها مفيدة للغاية. ولكن كيف أجعل الكود يعمل إذا كنت أستخدم outlook.office.com؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
في النص ، أريد العمود أ ، ب ، ج قيمة في تنسيق جدول ، مثل تاريخ انتهاء الصلاحية الذي تم الوصول إليه بمجرد الوصول إليه في عمود النص ، أريد طباعة تفاصيل خلايا أ ، ب ، ج بتنسيق جدول
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا Dinesh BS ،
آسف لا أستطيع مساعدتك في ذلك. مرحبًا بك لنشر أي سؤال في منتدانا: https://www.extendoffice.com/forum.html.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، أنا جديد في VBA. هل هناك طريقة لتشغيل هذا البرنامج تلقائيًا عند فتح الملف؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا L Echols ،
لتشغيل الكود تلقائيًا عند فتح الملف ، يرجى النقر نقرًا مزدوجًا لفتح نافذة التعليمات البرمجية ThisWorkbook (الموجودة في الجانب الأيسر من نافذة Microsoft Visual Basic for Applications) ، وحدد المصنف من القائمة المنسدلة الأولى ، ثم انسخ أعلى رمز VBA (باستثناء السطر الأول والأخير) في نافذة التعليمات البرمجية والصقها بين السطرين المحددين. انظر أدناه لقطة الشاشة المرفقة:
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هذا رائع. كنت أتساءل عما إذا كانت هناك طريقة لتشغيل الكود دون الحاجة إلى تحديد قيم KuTools في كل مرة؟ للتوضيح ، أدخلت هذا الرمز والآن كلما فتحت المصنف ، لا يزال يتعين علي تمييز الأعمدة نفسها. هل هناك طريقة لإدخال الكود لإجراء فحص على نفس الأعمدة في كل مرة - طالما لم يتم إجراء أي تعديلات على المصنف - لتشغيل الفحص وصياغة بريد إلكتروني قائم على الشيك المذكور؟ شكرا لكم مقدما.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا داني ،
يرجى تجربة الكود أدناه وتغيير النطاقات حسب حاجتك.

Public Sub CheckAndSendMail ()
'تم التحديث بواسطة Extendoffice 2019 / 5 / 17
خافت xRg التاريخ كنطاق
خافت xRg إرسال كمدى
خافت xRgText كنطاق
خافت xRg تم تنفيذه كنطاق
خافت xOutApp ككائن
خافت xMailItem ككائن
خافت xLastRow طويل
خافت vbCrLf كسلسلة
خافت xMailBody كسلسلة
خافت xRgDateVal كسلسلة
خافت xRgSendVal كسلسلة
خافت xMailSubject كسلسلة
خافت أنا طويلة
على خطأ استئناف التالي
تعيين xRgDate = النطاق ("C2: C4")
إذا كان xRgDate لا شيء ، فاخرج من Sub
تعيين xRgSend = النطاق ("A2: A4")
إذا كان xRgSend لا شيء ، فاخرج من Sub
تعيين xRgText = Range ("B2: B4")
إذا كان xRgText لا شيء ، فقم بالخروج من Sub
xLastRow = xRgDate.Rows.Count
تعيين xRgDate = xRgDate (1)
تعيين xRgSend = xRgSend (1)
تعيين xRgText = xRgText (1)
تعيين xOutApp = CreateObject ("Outlook.Application")
لأني = 1 إلى xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset (i - 1) .Value
إذا كان xRgDateVal <> "" ثم
إذا كان CDate (xRgDateVal) - التاريخ <= 7 و CDate (xRgDateVal) - التاريخ> 0 ثم
xRgSendVal = xRgSend.Offset (i - 1) .Value
xMailSubject = xRgText.Offset (i - 1) .Value & "on" & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "عزيزي" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "النص:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""
قم بتعيين xMailItem = xOutApp.CreateItem (0)
مع xMailItem
. الموضوع = xMailSubject
إلى = xRgSendVal
.HTMLBody = xMailBody
.عرض
'.يرسل
انتهت ب
تعيين xMailItem = لا شيء
إنهاء حالة
إنهاء حالة
التالى
تعيين xOutApp = لا شيء
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هذا رائع. كنت أتساءل عما إذا كانت هناك طريقة لتشغيل الكود دون الحاجة إلى تحديد قيم KuTools في كل مرة؟ للتوضيح ، أدخلت هذا الرمز والآن كلما فتحت المصنف ، لا يزال يتعين علي تمييز الأعمدة نفسها. هل هناك طريقة لإدخال الكود لإجراء فحص على نفس الأعمدة في كل مرة - طالما لم يتم إجراء أي تعديلات على المصنف - لتشغيل الفحص وصياغة بريد إلكتروني قائم على الشيك المذكور؟ شكرا لكم مقدما.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا كريستال ،
أواجه مشكلة في إرسال البريد الإلكتروني تلقائيًا بمجرد فتح الملف. على سبيل المثال ، لدي جميع معلومات تاريخ الاستحقاق في الورقة 1. ومع ذلك ، إذا قمت بحفظ الملف وإغلاقه عندما كنت أعمل على ورقة 2 ، فبمجرد فتح الملف ، ستعتمد القيم لإرسال رسائل البريد الإلكتروني على الورقة 2 وليس على الورقة 1. لقد تمت إضافة وحدة فقط على الورقة 1 و ThisWorkbook. أعتقد أن وجود نفس vba على ThisWorkbook يؤدي إلى إرسال رسائل بريد إلكتروني تلقائية على أي ورقة أفتحها في الوقت الحالي. كيف يمكنني تقييد VBA لسحب القيمة من ورقة معينة وأيضًا إرسال رسائل بريد إلكتروني عند فتح الملف؟ شكرا جزيلا لمساعدتكم مقدما لك!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أنا جديد في VBA. هل هناك طريقة لتشغيل هذا البرنامج تلقائيًا متى تم فتح الملف؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
نعم مع


مصنف فرعي خاص_ فتح ()
*أدخل رمز هنا*
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،

عندي سؤال،

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

xLastRow = xRgDate.Rows.Count
تعيين xRgDate = xRgDate (1)

Toset أوتوماتيكيا الخلايا؟

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

Public Sub CheckAndSendMail ()
'تم التحديث بواسطة Extendoffice 2019 / 12 / 10
خافت xRg التاريخ كنطاق
خافت xRg إرسال كمدى
خافت xRgText كنطاق
خافت xRg تم تنفيذه كنطاق
خافت xOutApp ككائن
خافت xMailItem ككائن
خافت xLastRow طويل
خافت vbCrLf كسلسلة
خافت xMailBody كسلسلة
خافت xRgDateVal كسلسلة
خافت xRgSendVal كسلسلة
خافت xMailSubject كسلسلة
خافت أنا طويلة
على خطأ استئناف التالي
تعيين xRgDate = النطاق ("C2: C4")
إذا كان xRgDate لا شيء ، فاخرج من Sub
تعيين xRgSend = النطاق ("A2: A4")
إذا كان xRgSend لا شيء ، فاخرج من Sub
تعيين xRgText = Range ("B2: B4")
إذا كان xRgText لا شيء ، فقم بالخروج من Sub
xLastRow = xRgDate.Rows.Count
تعيين xRgDate = xRgDate (1)
تعيين xRgSend = xRgSend (1)
تعيين xRgText = xRgText (1)
تعيين xOutApp = CreateObject ("Outlook.Application")
لأني = 1 إلى xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset (i - 1) .Value
إذا كان xRgDateVal <> "" ثم
إذا كان CDate (xRgDateVal) - التاريخ <= 7 و CDate (xRgDateVal) - التاريخ> 0 ثم
xRgSendVal = xRgSend.Offset (i - 1) .Value
xMailSubject = xRgText.Offset (i - 1) .Value & "on" & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "عزيزي" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "النص:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""
قم بتعيين xMailItem = xOutApp.CreateItem (0)
مع xMailItem
. الموضوع = xMailSubject
إلى = xRgSendVal
.HTMLBody = xMailBody
.عرض
'.يرسل
انتهت ب
تعيين xMailItem = لا شيء
إنهاء حالة
إنهاء حالة
التالى
تعيين xOutApp = لا شيء
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
بوينس دياس! ¿que modificación way que realizar para dejar seleccionadas las celdas con la información de fecha، texto y correo y no tener que seleccionarlas cada vez que se activa la macro؟

también me gustaría sabre como introducir un CC، es decir، poder poner a otra persona en copia del correo. غراسياس!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أولا! Pudiste solucionar esto؟ Estoy necesitando lo mismo .. جراسياس!
لا توجد تعليقات منشورة هنا حتى الآن
عرض المزيد
اترك تعليقاتك
النشر كضيف
×
قيم المنشور:
0   الشخصيات
المواقع المقترحة

تواصل معنا

حقوق التأليف والنشر © 2009 - شبكة الاتصالات العالمية.extendoffice.com. | كل الحقوق محفوظة. مشغل بواسطة ExtendOffice. | | خريطة الموقع
Microsoft وشعار Office هما علامتان تجاريتان أو علامتان تجاريتان مسجلتان لشركة Microsoft Corporation في الولايات المتحدة و / أو دول أخرى.
محمي بواسطة Sectigo SSL