Skip to main content

دليل Excel – إرسال رسائل البريد الإلكتروني من Excel

Author: Siluvia Last Modified: 2025-05-30

عادةً ما نستخدم برامج البريد الإلكتروني مثل Outlook أو Gmail لإرسال الرسائل. لكن كثير من المستخدمين يحتفظون بالبيانات في أدوات المصنف Excel ويحتاجون إلى مشاركة بعض هذه البيانات أثناء العمل عليها. لذلك، يحتاجون إلى إرسال رسائل البريد الإلكتروني مباشرة من أدوات المصنف Excel، مما يوفر الوقت مقارنة باستخدام برنامج البريد الإلكتروني. سيوضح لك هذا الدليل خطوة بخطوة كيفية إرسال رسائل البريد الإلكتروني من Excel في ظروف مختلفة.

ملاحظة: قبل تطبيق الطرق التالية، يجب عليك إعداد عميل بريد إلكتروني Outlook على جهاز الكمبيوتر الخاص بك وتعيينه كعميل البريد الإلكتروني الافتراضي.

 جدول المحتويات: [ إخفاء ]

(انقر على أي عنوان في جدول المحتويات أدناه أو على اليمين للانتقال إلى الفصل المقابل.)

1. أساسيات إرسال رسائل البريد الإلكتروني من Excel

تقدم هذه القسم أساسيات إرسال رسائل البريد الإلكتروني من Excel.

1.1 إرسال رسائل البريد الإلكتروني من Excel باستخدام الدوال المدمجة في Excel

إذا كنت ترغب فقط في إرسال رسائل بريد إلكتروني بسيطة من Excel، تتضمن فقط حقول إلى، الموضوع، Cc ونص الرسالة. يمكن للدوال المدمجة في Excel مساعدتك في ذلك.


1.1.1 إرسال بريد إلكتروني من Excel باستخدام الصيغة

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

ملاحظة: إذا كان هناك أكثر من مستلم في حقلي إلى أو Cc، يرجى الفصل بينهم بفاصلة منقوطة.

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

بنية الدالة ومعاملات دالة "HYPERLINK" كما يلي.

البنية

HYPERLINK(link_location, [friendly_name])

المعاملات

"Link_location" (إجباري): المسار واسم الملف للمستند الذي سيتم فتحه؛
نصيحة: في هذا الدليل، يجب وضع جميع الحقول التي نحتاجها للبريد الإلكتروني، مثل عنوان المستلم، مستلم Cc، سطر الموضوع ونص الرسالة، في المعامل الأول "link_location".
"Friendly_name" (اختياري): القيمة التي يتم عرضها في الخلية.

1.1.1.1 إضافة عنوان البريد الإلكتروني إلى صيغة Hyperlink

هنا نستخدم "mailto:" كجزء من الصيغة لإضافة مستلم البريد الإلكتروني. في هذا المثال، عنوان البريد الإلكتروني للمستلم الأول موجود في الخلية B2، لذا نحتاج إلى إضافة "mailto:" وربطه بالخلية B2.

“mailto:”&B2

1. حدد خلية لعرض الرابط التشعبي. في هذا المثال، اخترت الخلية F2.

2. ثم أدخل الصيغة التالية فيها.

=HYPERLINK("mailto:"&B2)

ملاحظة: إذا ضغطت على مفتاح "Enter"، سيتم إنشاء رابط تشعبي كما هو موضح في لقطة الشاشة أدناه. عند النقر على الرابط، سيتم إنشاء بريد إلكتروني في Outlook وسيتم تعبئة عنوان البريد الإلكتروني للمستلم تلقائيًا في حقل إلى.

تم الآن إضافة عنوان البريد الإلكتروني للمستلم إلى صيغة Hyperlink. يرجى متابعة الخطوات التالية لإضافة سطر الموضوع، مستلم Cc، ونص الرسالة حسب الحاجة.


1.1.1.2 إضافة مستلم Cc إلى صيغة Hyperlink

لإضافة مستلم Cc إلى دالة Hyperlink، يرجى إضافة "?cc=" كجزء من الصيغة كما يلي.

"?cc=" & C2
حيث تحتوي الخلية C2 على عنوان البريد الإلكتروني لمستلم Cc.

يجب أن تكون الصيغة في الخلية F2 كما يلي:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2)


1.1.1.3 إضافة سطر الموضوع إلى صيغة Hyperlink

لإضافة سطر الموضوع إلى دالة Hyperlink، يرجى إضافة "&subject=" كجزء من الصيغة كما يلي.

"&subject="& D2
حيث تحتوي الخلية D2 على موضوع البريد الإلكتروني.

يجب أن تبدو الصيغة في الخلية F2 الآن كما يلي:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)


1.1.1.4 إضافة نص الرسالة مع فواصل الأسطر إلى صيغة Hyperlink

الخطوة الأخيرة هي إضافة نص الرسالة إلى صيغة Hyperlink. كما ترى في المثال، هناك سطران من النص في الخلية E2 مفصولان بفاصل أسطر، وتريد الحفاظ على فاصل الأسطر في نص البريد الإلكتروني. هل يتعرف Outlook على فاصل الأسطر في هذه الحالة؟ دعنا نتحقق من ذلك.

لإضافة نص الرسالة إلى صيغة Hyperlink، تحتاج إلى إضافة “&body=" كجزء من الصيغة كما يلي.

"&body="& E2
حيث تحتوي الخلية E2 على نص الرسالة للبريد الإلكتروني.

تظهر الصيغة في الخلية F2 الآن كما يلي:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)

ملاحظة: إذا ضغطت على مفتاح "Enter" ونقرت على الرابط. ستلاحظ في البريد الإلكتروني الجديد أن محتوى نص الرسالة يظهر في نفس السطر.

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


1.1.1.5 تحديد النص المعروض للرابط التشعبي

في الخطوات السابقة، أكملنا معامل Link_location مع حقول البريد الإلكتروني. في هذا القسم، سنكمل المعامل التالي [friendly_name].

في هذا المثال، أرغب في أن تعرض خلية الرابط التشعبي النص "إرسال بريد إلى xx"، حيث xx هو اسم المستلم الموجود في A2. لذا يجب تغيير الصيغة في F2 إلى:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)

اضغط على مفتاح "Enter" للحصول على النتيجة.

حدد خلية الصيغة هذه واسحب مقبض التعبئة التلقائية لأسفل لإنشاء روابط بريد إلكتروني أخرى. انظر لقطة الشاشة:


1.1.2 إرسال بريد إلكتروني من Excel باستخدام دالة Hyperlink

بالإضافة إلى استخدام صيغة Hyperlink السابقة، يمكنك إنشاء رابط بريد إلكتروني يدويًا باستخدام وظيفة "إدراج ارتباط تشعبي" في Excel. سيعرض هذا القسم الخطوات اللازمة.

1. انقر بزر الماوس الأيمن على البريد الإلكتروني الذي ترغب في إدراج رابط تشعبي فيه، ثم اختر "ربط" من قائمة النقر بزر الماوس الأيمن.

2. في مربع الحوار المنبثق "إدراج ارتباط تشعبي"، تحتاج إلى التكوين كما يلي.

2.1) اختر "عنوان البريد الإلكتروني" من الجزء الأيسر.
2.2) في مربع "النص المعروض"، اكتب النص الذي ترغب في عرضه في الخلية؛
نصيحة: لا يمكنك استخدام مراجع الخلايا في مربع الحوار هذا، لذا يجب عليك إدخال حقول البريد الإلكتروني يدويًا كما يلي.
2.3) في مربع "عنوان البريد الإلكتروني"، تحتاج إلى إدخال عناوين البريد الإلكتروني التالية.
mailto:email address
يرجى استبدال النص "email address" بعنوان بريدك الإلكتروني الحقيقي. إذا كان لديك أكثر من عنوان بريد إلكتروني، افصل بينهم بفاصلة منقوطة.
2.4) في مربع "الموضوع"، يمكنك تحديد موضوع البريد الإلكتروني ونص الرسالة هنا. يرجى التكوين كما يلي:
Email subject&body=Email body
في هذا المثال، كتبت "Monthly sale&body=Hi,%0AEmail received".
حيث أن الموضوع هو Monthly sale؛
و
نص الرسالة هو:
Hi,
Email received. ("%0A" هو رمز الحرف لعربة العودة الذي يتعرف عليه Outlook)
2.5) انقر على زر "موافق" لحفظ الرابط التشعبي. انظر لقطة الشاشة:

عند النقر على الرابط التشعبي، سيتم إنشاء بريد إلكتروني في Outlook مع الحقول المحددة (إلى، الموضوع، نص الرسالة) كما هو موضح في لقطة الشاشة أدناه.

ملاحظات:

1) باستخدام هذه الطريقة، يجب عليك إنشاء كل رابط بريد إلكتروني يدويًا.
2) لا يمكنك إضافة حقل Cc إلى الرسائل بهذه الطريقة. إذا كنت بحاجة إلى حقل Cc، يرجى إضافته من نافذة البريد الإلكتروني الجديدة.

1.2 إرسال بريد إلكتروني إلى عدة مستلمين في الخلايا باستخدام كود VBA

في المثال أعلاه، يمكنك رؤية عدة عناوين بريد إلكتروني معروضة في خلية واحدة، مفصولة بفواصل منقوطة. إذا كان لديك قائمة بعناوين البريد الإلكتروني كما هو موضح في لقطة الشاشة أدناه وترغب في إرسال بريد إلكتروني أو بريد إلكتروني مستقل لكل منهم، يمكن أن يساعدك كود VBA التالي.


1.2.1 إرسال بريد إلكتروني إلى عدة مستلمين في الخلايا باستخدام كود VBA

1. في ورقة العمل التي تحتوي على جميع عناوين البريد الإلكتروني التي ترغب في إرسال البريد إليها، اضغط على مفاتيح "Alt" + "F11" لفتح نافذة "Microsoft Visual Basic for Applications".

2. في نافذة "Microsoft Visual Basic for Applications"، انقر على "إدراج" > "وحدة"، ثم الصق الكود التالي في نافذة "Module (Code)".

كود VBA: إرسال بريد إلكتروني إلى قائمة من عناوين البريد الإلكتروني

Sub sendmultiple()
'updateby Extendoffice 20220802
    Dim xOTApp As Object
    Dim xMItem As Object
    Dim xCell As Range
    Dim xRg As Range
    Dim xEmailAddr As String
    Dim xTxt As String
    On Error Resume Next
    xTxt = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Set xOTApp = CreateObject("Outlook.Application")
    For Each xCell In xRg
        If xCell.Value Like "*@*" Then
            If xEmailAddr = "" Then
                xEmailAddr = xCell.Value
            Else
                xEmailAddr = xEmailAddr & ";" & xCell.Value
            End If
        End If
    Next
    Set xMItem = xOTApp.CreateItem(0)
    With xMItem
        .To = xEmailAddr
        .Subject = "Test"
        .Body = "Dear " _
                & vbNewLine & vbNewLine & _
                "This is a test email " & _
                "sending in Excel"
        .Display
    End With
End Sub

3. اضغط على مفتاح "F5" لتشغيل الكود وستظهر نافذة Kutools لـ Excel. حدد قائمة عناوين البريد الإلكتروني وانقر على "موافق".

A screenshot of the 'Kutools for Excel' dialog box asking for the email addresses list

ملاحظات:

1) إذا كنت لا ترغب في ظهور مربع الحوار أعلاه وتريد تحديد النطاق مباشرة في الكود، يرجى استبدال هذا السطر:
Set xRg = Application.InputBox("يرجى تحديد قائمة العناوين:", "Kutools لـ Excel", xTxt, , , , ,8)
بـ
Set xRg = Range("A2:A7")
2) يمكنك تحديد موضوع البريد الإلكتروني ونص الرسالة الخاص بك في الأسطر التالية:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) لإرسال البريد الإلكتروني مباشرة دون فتح نافذة الرسالة الجديدة، يجب عليك استبدال هذا السطر:
.Display
بـ
.Send

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

A screenshot of the email message window with all email addresses filled in the To field


1.2.2 إرسال رسائل بريد إلكتروني منفصلة لكل مستلم مدرج في الخلايا باستخدام كود VBA

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

1. في ورقة العمل التي تحتوي على جميع عناوين البريد الإلكتروني التي ترغب في إرسال الرسائل إليها، اضغط على مفاتيح "Alt" + "F11" لفتح نافذة "Microsoft Visual Basic for Applications".

2. في نافذة "Microsoft Visual Basic for Applications"، انقر على "إدراج" > "وحدة"، ثم الصق الكود التالي في نافذة Module (Code).

كود VBA: إرسال رسائل بريد إلكتروني منفصلة لكل عنوان مدرج في الخلايا

Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
    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 the addresses list", "KuTools For Excel", 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)
            With xMailOut
                .To = xRgVal
                .Subject = "Test"
                .Body = "Dear " _
                      & vbNewLine & vbNewLine & _
                        "This is a test email " & _
                        "sending in Excel"
                .Display
                '.Send
            End With
        End If
    Next
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

3. ثم انقر على "أدوات" > "مراجع". في مربع الحوار "مراجع – VBAProject"، ابحث وحدد مربع "Microsoft Outlook16.0 Object Library" ثم انقر على زر "موافق" لحفظ التغييرات.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

4. اضغط على مفتاح "F5" لتشغيل الكود وستظهر نافذة Kutools لـ Excel. حدد قائمة عناوين البريد الإلكتروني وانقر على "موافق".

A screenshot of the 'Kutools for Excel' dialog box asking for the email address list selection

ملاحظات:

1) إذا كنت لا ترغب في ظهور مربع الحوار أعلاه وتريد تحديد النطاق مباشرة في الكود، يرجى استبدال هذا السطر:
Set xRg = Application.InputBox("يرجى تحديد قائمة العناوين:", "Kutools لـ Excel", xTxt, , , , ,8)
بـ
Set xRg = Range("A2:A7")
2) يمكنك تحديد موضوع البريد الإلكتروني ونص الرسالة الخاص بك في الأسطر التالية:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) لإرسال البريد الإلكتروني مباشرة دون فتح نوافذ الرسائل التالية، يجب عليك استبدال هذا السطر:
.Display
بـ
.Send

في هذا المثال، هناك ستة عناوين بريد إلكتروني في النطاق المحدد، لذا سيتم إنشاء ست نوافذ رسائل Outlook تلقائيًا مع عنوان بريد إلكتروني منفصل في حقل إلى كما هو موضح في لقطة الشاشة أدناه.

A screenshot of multiple Outlook message windows with separate email addresses in the To field

5. أخيرًا، انقر على زر "إرسال" لإرسال الرسائل واحدة تلو الأخرى.


2. إدراج مرفقات أو توقيع Outlook في رسائل البريد الإلكتروني المرسلة من Excel (باستخدام أكواد VBA)

سيعرض هذا القسم كيفية إدراج المرفقات أو توقيع Outlook الافتراضي في رسائل البريد الإلكتروني المرسلة من Excel.

2.1 إدراج مرفقات في رسائل البريد الإلكتروني المرسلة من Excel

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


2.1.1 إرسال ملف معين كمرفق عبر البريد الإلكتروني

يمكنك تطبيق كود VBA التالي لإرسال ملف أو أكثر من مجلد كمرفقات من Excel.

1. اضغط على مفاتيح "Alt" + "F11".

2. في نافذة "Microsoft Visual Basic for Applications" المفتوحة، انقر على "إدراج" > "وحدة". ثم الصق كود VBA التالي في نافذة Module (Code).

كود VBA: إرسال ملفات من مجلد كمرفقات من Excel

Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
    Dim xStrFile As String
    Dim xFilePath As String
    Dim xFileDlg As FileDialog
    Dim xFileDlgItem As Variant
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
    If xFileDlg.Show = -1 Then
        With xMailOut
            .BodyFormat = olFormatRichText
            .To = "xxx@aaa.com"
            .Subject = "test"
            .HTMLBody = "test"
            For Each xFileDlgItem In xFileDlg.SelectedItems
                .Attachments.Add xFileDlgItem
            Next xFileDlgItem
            .Display
        End With
    End If
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

ملاحظات:

1) في السطر ".To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني للمستلم الخاص بك؛
2) غيّر موضوع البريد الإلكتروني ونص الرسالة بشكل منفصل في السطر ".Subject = "test"" و ".HTMLBody = "test""؛
3) يمكنك إضافة مستلمي Cc وBcc حسب الحاجة. فقط أضف السطرين التاليين أسفل السطر ."To = xxx@aaa.com".
.CC = "email address"
.BCC = "email address"

3. ثم انقر على "أدوات" > "مراجع". في مربع الحوار "مراجع – VBAProject"، ابحث وحدد مربع "Microsoft Outlook16.0 Object Library" ثم انقر على زر "موافق" لحفظ التغييرات.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

4. اضغط على مفتاح "F5" لتشغيل الكود، ثم ستظهر نافذة "تصفح"، يرجى تحديد الملفات التي تحتاج إلى إرفاقها في البريد الإلكتروني، ثم انقر على "موافق".

A screenshot of the 'Browse' window for selecting files to attach to an email in Exce

بعد ذلك ستظهر نافذة رسالة. يمكنك رؤية الملفات المحددة معروضة كمرفقات في حقل المرفقات.

A screenshot of the Outlook message window with selected files displayed as attachments


2.1.2 إرسال ورقة العمل الحالية كمرفق عبر البريد الإلكتروني

إذا كنت ترغب في إرسال ورقة العمل الحالية كمرفق من Excel، يمكنك تطبيق كود VBA في هذا القسم.

1. اضغط على مفاتيح "Alt" + "F11".

2. في نافذة "Microsoft Visual Basic for Applications" المفتوحة، انقر على "إدراج" > "وحدة". ثم الصق كود VBA التالي في نافذة "Module (Code)".

كود VBA: إرسال ورقة العمل الحالية كمرفق عبر البريد الإلكتروني

Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte features"
    .Body = "Please check and read this document."
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub

ملاحظات:

1) في السطر ."To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني الحقيقي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان بريد إلكتروني، يرجى الفصل بينهم بفواصل منقوطة.
2) غيّر موضوع البريد الإلكتروني ونص الرسالة بشكل منفصل في السطر ".Subject = "kte features"" و ".Body = " يرجى مراجعة هذا المستند.""؛
3) في السطرين التاليين:
.CC = "email address"
.BCC = "email address"
إذا كنت ترغب في إضافة مستلمي cc وbcc، استبدل النص “"email address"” في السطور بعناوين البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي cc وbcc، فقط أضف علامة اقتباس مفردة ' قبل كل سطر.

3. اضغط على مفتاح "F5" لتشغيل الكود، ثم سيتم حفظ ورقة العمل الحالية كمصنف Excel وإدراجها تلقائيًا في نافذة الرسالة كمرفق. انظر لقطة الشاشة:

A screenshot of the Outlook message window with the current worksheet saved and attached as an Excel workbook

ملاحظة: المصنف المرفق الذي يحتوي فقط على ورقة العمل الحالية يحمل نفس اسم المصنف الأصلي. كما يتم إضافة وقت تشغيل الكود إلى اسم المصنف أيضًا.


2.1.3 إرسال أدوات المصنف الحالية كمرفق عبر البريد الإلكتروني

بعد التعرف على كود VBA لإرسال ورقة العمل الحالية كمرفق من Excel، نقدم هنا كود VBA آخر لمساعدتك على إرسال جميع الجداول كمرفق. يرجى اتباع الخطوات التالية.

1. اضغط على مفاتيح "Alt" + "F11".

2. في نافذة "Microsoft Visual Basic for Applications" المفتوحة، انقر على "إدراج" > "وحدة". ثم الصق كود VBA التالي في نافذة Module (Code).

كود VBA: إرسال أدوات المصنف الحالية كمرفق عبر البريد الإلكتروني من Excel

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

ملاحظات:

1) في السطر ".To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني الحقيقي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان بريد إلكتروني، يرجى الفصل بينهم بفواصل منقوطة.
2) غيّر موضوع البريد الإلكتروني ونص الرسالة بشكل منفصل في السطر ".Subject = "kte features"" و ".Body = " يرجى مراجعة هذا المستند.""؛
3) في السطرين التاليين:
.CC = "email address"
.BCC = "email address"
إذا كنت ترغب في إضافة مستلمي cc وbcc، استبدل النص "email address” في السطور بعناوين البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي cc وbcc، فقط أضف علامة اقتباس مفردة ' قبل كل سطر.

3. اضغط على مفتاح "F5" لتشغيل الكود، ثم سيتم إدراج أدوات المصنف الحالية تلقائيًا في نافذة الرسالة كمرفق. انظر لقطة الشاشة:

A screenshot of the Outlook message window with the current workbook attached automatically


2.1.4 إرسال جميع الجداول كمرفق PDF عبر البريد الإلكتروني

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

1. اضغط على مفاتيح "Alt" + "F11".

2. في نافذة "Microsoft Visual Basic for Applications" المفتوحة، انقر على "إدراج" > "وحدة". ثم الصق كود VBA التالي في نافذة Module (Code).

كود VBA: إرسال جميع الجداول كمرفق PDF عبر البريد الإلكتروني

Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next

Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName

Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
    FilePath, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False

Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
       .To = "xxx@aaa.com"
       .CC = "Email Address"
       .BCC = "Email Address"
       .Subject = "test"
       .Body = "test"
       .Attachments.Add FilePath
       .Display   'or use .Send
   End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub

ملاحظات:

1) في السطر ".To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني الحقيقي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان بريد إلكتروني، يرجى الفصل بينهم بفواصل منقوطة.
2) غيّر موضوع البريد الإلكتروني ونص الرسالة بشكل منفصل في السطر .Subject = "test" و .Body = "test"؛
3) في السطرين التاليين:
.CC = "Email Address"
.BCC = "Email Address"
إذا كنت ترغب في إضافة مستلمي cc وbcc، استبدل النص "Email Address” في السطور بعناوين البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي cc وbcc، فقط أضف علامة اقتباس مفردة ' قبل كل سطر.
4) سيكون اسم ملف PDF هو نفسه اسم المصنف الأصلي. كما سيتم إضافة وقت تشغيل الكود إلى اسم المصنف أيضًا. إذا لم تكن بحاجة إلى إضافة الطابع الزمني إلى اسم الملف، يرجى إزالة & Format(Now, "dd-mmm-yy h-mm-ss") من السطر التالي.
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) -1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"

3. اضغط على مفتاح "F5" لتشغيل الكود. ثم سيتم إدراج أدوات المصنف الحالية تلقائيًا في نافذة رسالة جديدة كمرفق PDF. انظر لقطة الشاشة:

A screenshot of the Outlook message window with the current workbook attached as a PDF file


2.1.5 إرسال ورقة العمل الحالية كمرفق PDF عبر البريد الإلكتروني

على سبيل المثال، هناك مصنف باسم "Monthly sales"، وقد أنهيت جدول تقرير المبيعات في ورقة عمل باسم "sales report" وترغب في إرسال هذه الورقة كملف PDF إلى زملائك. يمكن أن يساعدك كود VBA التالي.

1. اضغط على مفاتيح "Alt" + "F11".

2. في نافذة "Microsoft Visual Basic for Applications" المفتوحة، انقر على "إدراج" > "وحدة". ثم الصق كود VBA التالي في نافذة Module (Code).

كود VBA: إرسال ورقة العمل الحالية كمرفق PDF عبر البريد الإلكتروني

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

ملاحظات:

1) في السطر ".To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني الحقيقي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان بريد إلكتروني، يرجى الفصل بينهم بفواصل منقوطة.
2) غيّر موضوع البريد الإلكتروني ونص الرسالة بشكل منفصل في السطر .Subject = "test" و .Body = "test"؛
3) في السطرين التاليين:
.CC = "Email Address"
.BCC = "Email Address"
إذا كنت ترغب في إضافة مستلمي cc وbcc، استبدل النص "Email Address” في السطور بعناوين البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي cc وbcc، فقط أضف علامة اقتباس مفردة ' قبل كل سطر.
4) سيكون اسم ملف PDF: اسم المصنف الأصلي_اسم ورقة العمل الأصلية. في هذا المثال، سيكون اسم ملف PDF هو Monthly sales_sales report.

3. اضغط على مفتاح "F5" لتشغيل الكود. ثم سيتم إدراج ورقة العمل الحالية تلقائيًا في نافذة رسالة جديدة كمرفق PDF. انظر لقطة الشاشة:

A screenshot of the Outlook message window with the current worksheet attached as a PDF file


2.2 إدراج توقيع Outlook في رسائل البريد الإلكتروني المرسلة من Excel

خذ المثال أعلاه، حيث طبقت كود VBA لإرسال ورقة العمل الحالية كمرفق PDF من Excel، لكن توقيع Outlook لا يمكن إضافته إلى نافذة الرسالة. للاحتفاظ بتوقيع Outlook الافتراضي في البريد الإلكتروني المرسل من Excel، ستساعدك الطريقة التالية.

يوجد كودان VBA أدناه.

كود VBA1: يساعد في الاحتفاظ بتوقيع Outlook.

كود VBA2: يساعد في إرسال ورقة العمل الحالية كمرفق PDF عبر البريد الإلكتروني.

كود VBA1: الاحتفاظ بتوقيع Outlook

.HTMLBody = "Email body" & "
" & .HTMLBody

كود VBA2: إرسال ورقة العمل الحالية كمرفق PDF عبر البريد الإلكتروني

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

1. عادةً، تحتاج إلى الضغط على مفاتيح "Alt" + "F11" لفتح نافذة "Microsoft Visual Basic for Applications".

2. في نافذة "Microsoft Visual Basic for Applications"، انقر على "إدراج" > "وحدة". ثم الصق كود VBA2 أعلاه في نافذة Module (Code).

3. للاحتفاظ بتوقيع Outlook الافتراضي في البريد الإلكتروني المرسل من Excel، تحتاج إلى تعديل كود VBA2 كما يلي:

1) استبدل سطر ".Body" بـ "كود VBA1"؛
2) انقل سطر ".Display" أسفل السطر "With OutlookMail (أو With xMailOut في أكواد أخرى)". انظر لقطة الشاشة:

A screenshot showing the modified VBA code with the .Body line replaced and .Display placed under With OutlookMail

إليك الكود الكامل بعد التعديل.

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .Display
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .HTMLBody = "Email body" & "
" & .HTMLBody
    .Attachments.Add FileName
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

4. اضغط على مفتاح "F5" لتشغيل الكود. ستحصل على نافذة رسالة جديدة مع إرفاق ورقة العمل الحالية كملف PDF، بينما سيتم إدراج توقيع Outlook الافتراضي تلقائيًا في نهاية نص البريد الإلكتروني.

A screenshot of an email in Outlook with the default signature automatically inserted at the end of the email body


3. إرسال رسائل البريد الإلكتروني تلقائيًا من Excel عند تحقق شرط معين (باستخدام أكواد VBA)

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

3.1 إرسال بريد إلكتروني تلقائيًا عند وصول قيمة خلية إلى حد معين

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

1. في ورقة العمل التي تحتوي على جدول المبيعات، انقر بزر الماوس الأيمن على تبويب الورقة واختر "عرض الكود" من قائمة النقر بزر الماوس الأيمن.

2. في نافذة "Microsoft Visual Basic for Applications" المفتوحة، الصق كود VBA التالي في نافذة "Sheet (Code)".

كود VBA: إرسال بريد إلكتروني تلقائيًا عند وصول قيمة خلية إلى حد معين في Excel

Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 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 boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub

ملاحظات:

1) "D6" هي الخلية التي سيتم إرسال البريد الإلكتروني بناءً على قيمتها.
2) ">10000" هو الشرط، مما يعني أنه سيتم إرسال بريد إلكتروني عندما تكون القيمة في D6 أكبر من10000.
3) "Range(“D6”)" في السطر التالي يعني أن نص الرسالة سيشير إلى القيمة في D6.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4) في السطر ".To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني الحقيقي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان بريد إلكتروني، يرجى الفصل بينهم بفواصل منقوطة.
5) غيّر موضوع البريد الإلكتروني في السطر .Subject = "test".
6) في السطرين التاليين:
.CC = "Email Address"
.BCC = "Email Address"
إذا كنت ترغب في إضافة مستلمي cc وbcc، استبدل النص "Email Address” في السطور بعناوين البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي cc وbcc، فقط أضف علامة اقتباس مفردة ' قبل كل سطر.

من الآن فصاعدًا، عندما تتجاوز القيمة في الخلية D6 مقدار10000، سيتم إنشاء بريد إلكتروني كما هو موضح في لقطة الشاشة أدناه.

A screenshot of an email created in Outlook when the value in cell D6 exceeds 10000 in Excel


3.2 إرسال بريد إلكتروني تلقائيًا عند تغيير قيمة خلية

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

1. في ورقة العمل التي تحتوي على جدول المبيعات، انقر بزر الماوس الأيمن على تبويب الورقة واختر "عرض الكود" من قائمة النقر بزر الماوس الأيمن.

2. في نافذة "Microsoft Visual Basic for Applications" المفتوحة، الصق كود VBA التالي في نافذة Sheet (Code).

كود VBA: إرسال بريد إلكتروني تلقائيًا عند تغيير قيمة خلية محددة

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If

ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address

Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."

With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

ملاحظات: في الكود،

1) "B14" في الكود تعني أنه عند تغيير قيمة الخلية B14، سيتم إرسال بريد إلكتروني.
2) في السطر ".To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني الحقيقي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان بريد إلكتروني، يرجى الفصل بينهم بفواصل منقوطة.
3) غيّر موضوع البريد الإلكتروني في السطر .Subject = "تم تعديل ورقة العمل".
4) في السطرين التاليين:
.CC = "Email Address"
.BCC = "Email Address"
إذا كنت ترغب في إضافة مستلمي cc وbcc، استبدل النص "Email Address” في السطور بعناوين البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي cc وbcc، فقط أضف علامة اقتباس مفردة ' قبل كل سطر.

من الآن فصاعدًا، عندما تتغير قيمة الخلية B14، سيتم إنشاء رسالة Outlook تلقائيًا كما هو موضح في لقطة الشاشة أدناه.

A screenshot of an email created in Outlook when the value in cell B14 changes


3.3 إرسال بريد إلكتروني تلقائيًا عند حفظ أدوات المصنف

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

1. اضغط على مفاتيح "Alt" + "F11" لفتح نافذة "Microsoft Visual Basic for Applications".

2. في هذه النافذة، انقر نقرًا مزدوجًا على "ThisWorkbook" في جزء "Project"، ثم الصق كود VBA التالي في نافذة "ThisWorkbook (Code)".

كود VBA: إرسال بريد إلكتروني تلقائيًا عند حفظ أدوات المصنف

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xName As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailItem = xOutApp.CreateItem(0)
    xName = ActiveWorkbook.FullName
    With xMailItem
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .Subject = "The workbook has been updated"
        .Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
        .Attachments.Add xName
        .Display
       '.send
    End With
    Set xMailItem = Nothing
    Set xOutApp = Nothing
End Sub

ملاحظات: في الكود،

1) في السطر ".To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني الحقيقي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان بريد إلكتروني، يرجى الفصل بينهم بفواصل منقوطة.
2) غيّر موضوع البريد الإلكتروني ونص الرسالة بشكل منفصل في السطرين ".Subject = "تم تحديث أدوات المصنف"" و ".Body = "مرحبًا،" & Chr(13) & Chr(13) & "تم تحديث الملف الآن."".
3) في السطرين التاليين:
.CC = "Email Address"
.BCC = "Email Address"
إذا كنت ترغب في إضافة مستلمي cc وbcc، استبدل النص “Email Address" في السطور بعناوين البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي cc وbcc، فقط أضف علامة اقتباس مفردة ' قبل كل سطر.

3. من الآن فصاعدًا، عند حفظ أدوات المصنف بالضغط على مفاتيح "Ctrl" + "S" أو النقر على زر "حفظ"، سيتم إنشاء بريد إلكتروني في Outlook تلقائيًا. يمكنك رؤية أن أدوات المصنف الحالية مرفقة كمرفق وتم تعبئة الحقول بالمحتوى المحدد. انظر لقطة الشاشة:

A screenshot showing an Outlook email with the current workbook attached, ready to be sent automatically

نصيحة: إذا كنت تستخدم أدوات المصنف هذه بشكل متكرر، نوصي بحفظها كـ "مصنف Excel يدعم وحدات الماكرو" للاحتفاظ بكود VBA للاستخدام المستقبلي. الخطوات كما يلي.

1) انقر على "ملف" > "حفظ باسم"، ثم اختر مجلدًا لحفظ الملف.
2) في مربع الحوار "حفظ باسم"، أعد تسمية الملف حسب الحاجة في مربع "اسم الملف"، واختر "مصنف Excel يدعم وحدات الماكرو" في قائمة "تحديد تنسيق الحفظ" المنسدلة، وأخيرًا انقر على زر "حفظ". انظر لقطة الشاشة:

A screenshot of the 'Save As' dialog in Excel showing the option to save the workbook as an Excel Macro-Enabled Workbook


3.4 إرسال بريد إلكتروني تلقائيًا في وقت محدد

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

1. اضغط على مفاتيح "Alt" + "F11" لفتح نافذة "Microsoft Visual Basic for Applications".

2. في نافذة "Microsoft Visual Basic for Applications"، انقر على "إدراج" > "وحدة". ثم الصق كود VBA التالي في نافذة Module.

كود VBA1: إرسال أدوات المصنف الحالية كمرفق عبر البريد الإلكتروني من Excel

Sub Timer()
    If Weekday(Date) = vbFriday Then
        SendWorkBook
        Application.OnTime TimeValue("09:00:00"), "Timer"
    Else
        Application.OnTime TimeValue("09:00:00"), "Timer"
    End If
End Sub

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. في هذه النافذة، انقر نقرًا مزدوجًا على "ThisWorkbook" في جزء "Project"، ثم الصق كود VBA التالي في نافذة "ThisWorkbook (Code)".

A screenshot showing the VBA code editor with the 'Workbook_Open' event and 'Application.OnTime' function to schedule email sending

كود VBA2: إرسال بريد إلكتروني تلقائيًا في وقت محدد

Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub

ملاحظات:

1) في كود VBA1، تعني "الجمعة" في السطر التالي أن البريد الإلكتروني سيتم إرساله تلقائيًا كل يوم جمعة؛
If Weekday(Date) = vbFriday Then
2) في كود VBA1 وكود VBA2، تعني "09:00:00" أن البريد الإلكتروني سيتم إرساله في الساعة9 صباحًا في اليوم المحدد.
يمكنك تغيير اليوم والوقت حسب الحاجة.
3) عند تشغيل الكود، سيتم إنشاء بريد إلكتروني. إذا كنت لا ترغب في ظهور نافذة الرسالة وتحتاج إلى إرساله مباشرة، يرجى إزالة السطر ".Display" من كود VBA1، وإزالة علامة الاقتباس المفردة قبل السطر ‘.Send.

4. احفظ الأكواد ثم احفظ أدوات المصنف كـ مصنف Excel يدعم وحدات الماكرو كما يلي.

4.1) انقر على "ملف" > "حفظ باسم"، ثم اختر مجلدًا لحفظ الملف.
4.2) في مربع الحوار "حفظ باسم"، أعد تسمية الملف حسب الحاجة في مربع "اسم الملف"، واختر "مصنف Excel يدعم وحدات الماكرو" في قائمة "تحديد تنسيق الحفظ" المنسدلة، وأخيرًا انقر على زر "حفظ". انظر لقطة الشاشة:

A screenshot of the 'Save As' dialog in Excel showing the option to save the workbook as an Excel Macro-Enabled Workbook

5. افتح أدوات المصنف التي تم حفظها مع وحدات الماكرو، ثم سيتم إنشاء أو إرسال بريد إلكتروني تلقائيًا عند وصول اليوم والوقت المحددين.


4. مواضيع إضافية

يجمع هذا القسم مواضيع أخرى قد تواجهها عند إرسال رسائل البريد الإلكتروني من Excel.

4.1 إرسال نطاق من الخلايا عبر البريد الإلكتروني من Excel (باستخدام كود VBA)

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

4.1.1 إرسال نطاق كجزء من نص الرسالة من Excel

يمكنك تشغيل كود VBA التالي لإرسال نطاق من الخلايا كجزء من نص الرسالة من Excel

1. اضغط على مفاتيح "Alt" + "F11" لفتح نافذة "Microsoft Visual Basic for Applications".

2. في نافذة "Microsoft Visual Basic for Applications"، انقر على "أدوات" > "مراجع". ثم حدد مربع "Microsoft Outlook16.0 Object Library" وانقر على "موافق" في مربع الحوار "مراجع – VBAProject".

3. انقر على "إدراج" > "وحدة"، ثم الصق كود VBA التالي في نافذة "Module (Code)".

كود VBA: إرسال نطاق من الخلايا كجزء من نص الرسالة من Excel

Sub SendARangeofCells()
'Updated by Extendoffice 20220809
    Dim xRg As Range
    Dim I, J As Long
    Dim xAddress As String
    Dim xMailOut As Object
    Dim xOutApp As Object
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    With xMailOut
        .Subject = "test"
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .HTMLBody = RangetoHTML(xRg)
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

 ' The following VBA script is cited from this page:
 ' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    'Copy the range and create a new workbook to past the data in
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    'Publish the sheet to a htm file
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With

    'Read all data from the htm file into RangetoHTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")

    'Close TempWB
    TempWB.Close savechanges:=False

    'Delete the htm file we used in this function
    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function

ملاحظات: في الكود،

1) في السطر ".To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني الحقيقي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان بريد إلكتروني، يرجى الفصل بينهم بفواصل منقوطة.
2) في السطرين التاليين:
.CC = "Email Address"
.BCC = "Email Address"
إذا كنت ترغب في إضافة مستلمي cc وbcc، استبدل النص "Email Address” في السطور بعناوين البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي cc وbcc، فقط أضف علامة اقتباس مفردة ' قبل كل سطر.

4. اضغط على مفتاح "F5" لتشغيل الكود. في مربع الحوار "Kutools لـ Excel" المنبثق، حدد نطاق الخلايا الذي تحتاج إلى إرساله كجزء من نص الرسالة، ثم انقر على "موافق". انظر لقطة الشاشة:

A screenshot of the Kutools for Excel dialog box where a range of cells is selected to send as part of an email body

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

A screenshot of an Outlook email with the selected range from Excel inserted into the email body


4.1.2 إرسال نطاق كمرفق عبر البريد الإلكتروني من Excel

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

1. اضغط على مفاتيح "Alt" + "F11".

2. في نافذة "Microsoft Visual Basic for Applications" المفتوحة، انقر على "إدراج" > "وحدة". ثم الصق كود VBA التالي في نافذة "Module (Code)".

كود VBA: إرسال نطاق كمرفق عبر البريد الإلكتروني من Excel

Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email address"
    .BCC = "Email address"
    .Subject = "Monthly sales for 2021"
    .Body = "Hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

ملاحظات:

1) في السطر ".To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني الحقيقي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان بريد إلكتروني، يرجى الفصل بينهم بفواصل منقوطة.
2) غيّر موضوع البريد الإلكتروني ونص الرسالة بشكل منفصل في السطر" .Subject = "المبيعات الشهرية لعام2021"" و ".Body = "مرحبًا، يرجى مراجعة هذا المستند.""؛
3) في السطرين التاليين:
.CC = "email address"
.BCC = "email address"
إذا كنت ترغب في إضافة مستلمي cc وbcc، استبدل النص "email address” في السطور بعناوين البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي cc وbcc، فقط أضف علامة اقتباس مفردة ' قبل كل سطر.

3. اضغط على مفتاح "F5" لتشغيل الكود. في مربع الحوار "Kutools لـ Excel" المنبثق، حدد نطاق الخلايا الذي تحتاج إلى إرساله كمرفق في البريد الإلكتروني، ثم انقر على "موافق". انظر لقطة الشاشة:

A screenshot of the Kutools for Excel dialog box where a range of cells is selected to send as an attachment in an email

سيتم إنشاء بريد إلكتروني في Outlook تلقائيًا. وسيتم حفظ نطاق الخلايا الذي حددته في ورقة العمل كمصنف Excel وإرفاقه في نافذة الرسالة. انظر لقطة الشاشة:

A screenshot of an Outlook email with the selected range from Excel saved as an attachment


4.2 إرسال رسائل البريد الإلكتروني عند النقر على زر في Excel

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

1. انقر على "المطور" > "إدراج" > "زر أمر (عنصر تحكم ActiveX)". ثم ارسم زر أمر في ورقة العمل.

نصيحة: إذا كان لديك زر أمر بالفعل، تخط هذه الخطوة.

2. اضغط على مفاتيح "Alt" + "F11" لفتح نافذة "Microsoft Visual Basic for Applications". في النافذة، انقر على "إدراج" > "وحدة"، ثم الصق كود VBA (الكود المستخدم لإرسال أدوات المصنف الحالية كمرفق من Excel) في نافذة Module (Code).

انقر هنا للحصول على الكود.

ملاحظة: اسم الماكرو الذي أنشأته في الخطوة2 هنا هو "SendWorkbook".

3. اضغط على مفاتيح "Alt" + "Q" لإغلاق نافذة "Microsoft Visual Basic for Applications".

4. الآن تحتاج إلى تعيين الماكرو لزر الأمر. انقر بزر الماوس الأيمن على زر الأمر، واختر "عرض الكود" من قائمة النقر بزر الماوس الأيمن.

5. ستظهر نافذة "Microsoft Visual Basic for Applications"، ويمكنك رؤية السطرين التاليين مدرجين في نافذة "Sheet (Code)".

Private Sub CommandButton1_Click()
End Sub

A screenshot of the Microsoft Visual Basic for Applications window showing the CommandButton1_Click code

6. أدخل اسم الماكرو الموجود داخل الإجراء الفرعي لزر الأمر.

A screenshot of editing the VBA code to assign an existing macro to the command button

7. اضغط على مفاتيح "Alt" + "Q" لإغلاق "محرر Visual Basic"، وانقر على "المطور" > "وضع التصميم" لإيقاف وضع التصميم.

A screenshot of turning off Design Mode in the Developer tab

الآن يمكنك النقر على زر الأمر لإرسال بريد إلكتروني مع أدوات المصنف الحالية كمرفق في البريد الإلكتروني.


4.3 إرسال رسائل البريد الإلكتروني من حساب بريد إلكتروني محدد

عادةً، عند إرسال بريد إلكتروني من Excel باستخدام كود VBA، يكون حساب البريد الإلكتروني للمرسل هو الحساب الافتراضي في Outlook. إذا كنت قد قمت بإعداد عدة حسابات بريد إلكتروني في Outlook وترغب في استخدام حساب معين لإرسال الرسائل من Excel بدلاً من الحساب الافتراضي، يمكن أن يساعدك كود VBA التالي.

الأكواد التالية ضرورية في هذه الحالة.

كود VBA1:

Dim OutlookMail As Outlook.MailItem

كود VBA2:

For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next

كيف تستخدم أكواد VBA أعلاه؟

1) في الكود الخاص بك، تحتاج إلى استبدال السطر مثل "Dim OutlookMail As Object” بكود VBA1؛
2) أضف كود VBA2 أسفل السطر "On Error Resume Next” في الكود الخاص بك. ثم حدد عنوان البريد الإلكتروني الذي ستستخدمه لإرسال البريد الإلكتروني في كود VBA2.

في هذا المثال، سنحدد حساب بريد إلكتروني معين لإرسال أدوات المصنف الحالية كمرفق من Excel. يرجى اتباع الخطوات التالية.

1. اضغط على مفاتيح "Alt" + "F11". في نافذة "Microsoft Visual Basic for Applications"، انقر على "أدوات" > "مراجع". ثم حدد مربع "Microsoft Outlook16.0 Object Library" وانقر على "موافق" في مربع الحوار "مراجع – VBAProject".

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

2. انقر على "إدراج" > "وحدة". ثم الصق كود VBA التالي في نافذة "Module (Code)".

كود VBA: إرسال أدوات المصنف الحالية كمرفق بريد إلكتروني من Excel عبر حساب Outlook محدد

Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next
'End
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. اضغط على مفتاح "F5" لتشغيل الكود. ستظهر رسالة بريد إلكتروني في Outlook، ويمكنك رؤية أن حقل "من" تم تعبئته بحساب البريد الإلكتروني الذي حددته في الكود.


4.4 إرسال بريد إلكتروني عند الوصول إلى تاريخ معين

إذا كنت بحاجة إلى إرسال بريد إلكتروني بناءً على تاريخ استحقاق محدد، على سبيل المثال، كما هو موضح في لقطة الشاشة أدناه، هناك جدول مشروع، "عندما يكون تاريخ الاستحقاق في النطاق E2:E7 يساوي أو أقل من7 أيام من اليوم (على افتراض أن التاريخ الحالي هو2022/8/4)", سيتم إرسال بريد إلكتروني تلقائيًا إلى قادة المشاريع المعنيين لإبلاغهم بأن المشروع على وشك الانتهاء.

1. في ورقة العمل التي تحتوي على جدول المشروع، انقر بزر الماوس الأيمن على تبويب الورقة واختر "عرض الكود" من قائمة النقر بزر الماوس الأيمن.

2. في نافذة "Microsoft Visual Basic for Applications" المفتوحة، الصق كود VBA التالي في نافذة "Sheet (Code)".

كود VBA: إرسال بريد إلكتروني تلقائيًا عند تحقق تاريخ الاستحقاق

Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
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 = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
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 = "

"
            xMailBody = ""
            xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
            xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
            xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub

ملاحظات: في الكود،

1) في السطور التالية، "E2:E7" يحتوي على تواريخ الاستحقاق التي سيتم إرسال الرسائل بناءً عليها. "C2:C7" يحتوي على عناوين البريد الإلكتروني التي سيتم إرسال الرسائل إليها. و"D2:D7" يحتوي على الملاحظات التي ستتم إضافتها في نص الرسالة لإبلاغ المستلمين بأن المشروع على وشك الانتهاء. يمكنك تغيير النطاقات حسب الحاجة.
Set xRgDate = Range("E2:E7")
Set xRgSend = Range("C2:C7")
Set xRgText = Range("D2:D7")
2) السطر التالي يعني أن تاريخ الاستحقاق يجب أن يكون أكبر من يوم واحد ويساوي أو أقل من7 أيام من اليوم. يمكنك تغييره حسب الحاجة.
If CDate(xRgDateVal) - Date <=7 And CDate(xRgDateVal) - Date >0 Then
3) في السطر ".To = xxx@aaa.com"، يرجى استبدال "xxx@aaa.com" بعنوان البريد الإلكتروني الحقيقي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان بريد إلكتروني، يرجى الفصل بينهم بفواصل منقوطة.
4) غيّر موضوع البريد الإلكتروني في السطر ".Subject = "تم تعديل ورقة العمل"".
5) في السطرين التاليين:
.CC = "Email Address"
.BCC = "Email Address"
إذا كنت ترغب في إضافة مستلمي cc وbcc، استبدل النص "Email Address" في السطور بعناوين البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي cc وbcc، فقط أضف علامة اقتباس مفردة ' قبل كل سطر.

3. اضغط على مفتاح "F5" لتشغيل الكود. إذا تطابق تاريخ الانتهاء مع الشروط، سيتم إنشاء البريد الإلكتروني المناسب. في هذا المثال، سيتم إنشاء رسالتين كما هو موضح في لقطة الشاشة أدناه.

A screenshot of two emails created automatically based on expiration date matching conditions in Excel


5. أداة عملية لمساعدتك على إرسال رسائل البريد الإلكتروني من Excel بسهولة

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

Kutools لـ Excel يقدم أكثر من 300 ميزة متقدمة لتبسيط المهام المعقدة، مما يعزز الإبداع والكفاءة. بالتكامل مع قدرات الذكاء الاصطناعي، يقوم Kutools بأتمتة المهام بدقة، مما يجعل إدارة البيانات أمرًا سهلاً للغاية. معلومات تفصيلية عن Kutools لـ Excel... نسخة تجريبية مجانية...
 5.1 إنشاء قائمة مراسلة بسهولة تتضمن حقول البريد الإلكتروني التي تحتاجها

قبل تطبيق ميزة إرسال البريد الإلكتروني، تحتاج إلى إنشاء قائمة مراسلة تحتوي على حقول البريد الإلكتروني التي تحتاجها. هنا يمكن أن تساعدك ميزة إنشاء قائمة البريد الإلكتروني.

1. انقر على "Kutools Plus" > "إنشاء قائمة البريد الإلكتروني".

2. في نافذة "إنشاء قائمة البريد الإلكتروني" المفتوحة، تحتاج إلى التكوين كما يلي.

2.1) في قسم "حدد الأعمدة التي ترغب في تضمينها في قائمة البريد الإلكتروني"، حدد الحقول التي تحتاجها في بريدك الإلكتروني؛
2.2) في قسم "حدد المرفقات التي ترغب في إضافتها"، حدد مرفقًا أو أكثر حسب الحاجة؛
2.3) حدد النطاق لوضع قائمة البريد الإلكتروني؛
2.4) انقر على زر "إنشاء". انظر لقطة الشاشة:

بعد ذلك سيتم إنشاء جدول قائمة بريد إلكتروني تجريبي كما هو موضح في لقطة الشاشة أدناه.

3. الآن تحتاج إلى استبدال البيانات الأصلية في العينة ببيانات الحقول الخاصة بك.

الآن بعد أن أنشأت جدول قائمة بريد إلكتروني، يرجى متابعة تطبيق ميزة "إرسال البريد الإلكتروني" لإرسال الرسائل من Excel بناءً على الحقول التي أنشأتها.

Kutools لـ Excel - قم بتعزيز Excel بأكثر من 300 أدوات أساسية. استمتع بميزات ذكاء اصطناعي مجانية بشكل دائم! احصل عليه الآن


 5.2 إرسال رسائل البريد الإلكتروني بسهولة مع الحقول التي أنشأتها في قائمة البريد الإلكتروني

بعد إنشاء قائمة البريد الإلكتروني (انقر لمعرفة الطريقة) التي تحتوي على الحقول التي قد تحتاجها في رسائلك، يمكنك الآن إرسال رسائل البريد الإلكتروني من Excel بهذه الحقول.

1. حدد قائمة البريد الإلكتروني بالكامل، ثم انقر على "Kutools Plus" > "إرسال البريد الإلكتروني".

2. في مربع الحوار "إرسال البريد الإلكتروني"، يرجى إجراء التكوين التالي.

2.1) يتم تعبئة الحقول تلقائيًا في مربع الحوار الخاص بكل حقل حسب الحقول التي حددتها في قائمة البريد الإلكتروني؛
نصيحة: إذا لم تكن بحاجة إلى حقل معين في هذا الوقت، اختر خيارًا فارغًا من القائمة المنسدلة.
2.2) "إدراج العنصر النائب" (اختياري): إذا كنت بحاجة إلى إدراج معلومات متغيرة في نص البريد الإلكتروني.
على سبيل المثال، قد تحتاج إلى إرسال بريد إلكتروني إلى عدة مستلمين مع اسم مخصص لكل منهم، تحتاج إلى وضع المؤشر في نص البريد الإلكتروني حيث تريد إدراج العنصر النائب، ثم تحديد الحقل “E: الاسم الأول” (أو أي حقل اسم آخر في قائمة البريد الإلكتروني)، ثم انقر على زر "إدراج العنصر النائب"؛
عند استلام المستلمين للبريد الإلكتروني، سيبقى نص الرسالة كما هو ولكن الأسماء ستكون فريدة لكل مستلم.
2.3) قم بكتابة نص البريد الإلكتروني حسب الحاجة؛
2.4) تأكد من تحديد خيار "إرسال باستخدام Outlook"؛
2.5) انقر على زر "إرسال". انظر لقطة الشاشة:

3. بعد ذلك ستظهر نافذة Kutools لـ Excel لإعلامك بعدد الرسائل التي تم إرسالها، انقر على زر "موافق" لإغلاق هذه النافذة.

نصيحة: يمكنك الانتقال إلى مجلد "العناصر المرسلة" في Outlook للتحقق من الرسائل التي أرسلتها.


5.3 إرسال رسائل البريد الإلكتروني بسهولة مع نص HTML (بما في ذلك الروابط التشعبية، الصور، إلخ)

تتيح لك ميزة إرسال البريد الإلكتروني إنشاء رسالة HTML، والتي تتضمن الروابط التشعبية، الصور، أحجام الخطوط المختلفة، ألوان الخطوط، وغيرها.

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

انظر لقطة الشاشة أدناه:


5.4 إدراج توقيع Outlook الافتراضي بسهولة عند إرسال رسائل البريد الإلكتروني

في الطريقة السابقة، عرضنا كود VBA لمساعدتك على إرسال رسائل البريد الإلكتروني مع توقيع Outlook الافتراضي. هنا، مع ميزة إرسال البريد الإلكتروني، كل ما عليك فعله هو تحديد خيار، وسيتم إدراج توقيع Outlook الافتراضي تلقائيًا في الرسائل التي ترسلها من Excel.

بعد إنشاء قائمة بريد إلكتروني تتضمن الحقول التي تحتاجها، عند تكوين مربع الحوار إرسال البريد الإلكتروني، تحتاج إلى النقر على "الخيارات" > "استخدام إعدادات توقيع Outlook".

ملاحظة: يرجى التأكد من وجود علامة اختيار أمام خيار استخدام إعدادات توقيع Outlook.

عند استلام المستلمين للبريد الإلكتروني، يمكنهم رؤية توقيع Outlook الافتراضي معروضًا في نهاية نص الرسالة.


5.5 إرسال رسائل البريد الإلكتروني بسهولة من حساب بريد إلكتروني محدد

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

بعد إنشاء قائمة بريد إلكتروني تتضمن الحقول التي تحتاجها، عند تكوين مربع الحوار إرسال البريد الإلكتروني، تحتاج إلى النقر على "الخيارات" > "إرسال من"، ثم اختيار حساب البريد الإلكتروني الذي ترغب في الإرسال منه.

ملاحظة:  بعد تحديد حساب البريد الإلكتروني، ستظهر علامة اختيار أمامه.

انقر هنا لمعرفة المزيد حول ميزة إرسال البريد الإلكتروني هذه.

Kutools لـ Excel - قم بتعزيز Excel بأكثر من 300 أدوات أساسية. استمتع بميزات ذكاء اصطناعي مجانية بشكل دائم! احصل عليه الآن

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

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

🤖 Kutools AI Aide: أحدث ثورة في تحليل البيانات من خلال: التنفيذ الذكي |توليد الشيفرة |إنشاء الصيغ المخصصة |تحليل البيانات وتوليد الرسوم البيانية |استدعاء الوظائف المحسنة
الميزات الشائعة: البحث، تمييز أو وضع علامة على المكررات | حذف الصفوف الفارغة | دمج الأعمدة أو العنوان دون فقدان البيانات | تقريب ...
بحث متقدم: بحث V متعدد المعايير | بحث V متعدد القيم | بحث في عدة ورقات | مطابقة غامضة ....
قائمة منسدلة متقدمة: إنشاء قائمة منسدلة بسرعة | قائمة منسدلة تابعة | قائمة منسدلة متعددة الاختيار ....
إدارة الأعمدة: إضافة عدد محدد من الأعمدة | نقل الأعمدة | تبديل حالة إظهار الأعمدة المخفية | مقارنة النطاق والأعمدة ...
ميزات مميزة: التركيز على الشبكة | عرض التصميم | شريط الصيغ المحسن | أدوات المصنف & أدوات الورقة العمل | مكتبة النص التلقائي (Auto Text) | منتقي التاريخ | دمج البيانات | تشفير/فك تشفير الخلايا | إرسال البريد الإلكتروني حسب القائمة | مرشح متقدم | تصفية خاصة (تصفية الخلايا التي تحتوي على خط عريض/مائل/يتوسطه خط...) ...
أفضل15 مجموعة أدوات:12 أداة نصية (إضافة نص، حذف الأحرف المحددة، ...) | أكثر من50 نوع من الرسوم البيانية (مخطط جانت، ...) | أكثر من40 صيغة عملية (حساب العمر بناءً على تاريخ الميلاد، ...) |19 أداة إدراج (إدراج رمز الاستجابة السريعة، إدراج صورة من المسار، ...) |12 أداة تحويل (تحويل إلى كلمات، تحويل العملة، ...) |7 أدوات دمج وتقسيم (دمج متقدم للصفوف، تقسيم الخلايا، ...) | ... والمزيد

عزز مهاراتك في Excel مع Kutools لـ Excel، واختبر الكفاءة كما لم يحدث من قبل. Kutools لـ Excel يقدم أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...


Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير

  • تمكين تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint.
  • افتح وأنشئ عدة مستندات في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ منفصلة.
  • يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات بالماوس يومياً!