KutoolsforOffice — حل واحد، خمس أدوات قوية.تحقيق المزيد بجهد أقل.

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

المؤلفSiluviaتاريخ التعديل

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

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

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

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

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

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

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

إذا كنت ترغب فقط في إرسال رسائل بريد إلكتروني بسيطة من Excel تتضمّن حقول «إلى» و«الموضوع» و«نسخة إلى» (Cc) ونص الرسالة فقط، فيمكنك الاعتماد على الوظائف المدمجة في Excel لتحقيق ذلك بسهولة.


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

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

ملاحظة: إذا كان هناك أكثر من مستلم واحد في حقلَي «إلى» أو «نسخة إلى» (Cc)، يُرجى فصل عناوينهم بفواصل منقوطة.

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

صيغة دالة «HYPERLINK» ووسيطاتها كما يلي.

الصيغة

HYPERLINK(link_location, [friendly_name])

الوسيطات

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

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

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

“mailto:”&B2

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

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

=HYPERLINK("mailto:"&B2)

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

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


1.1.1.2 إضافة مستلم(ي) «نسخة إلى» (Cc) إلى صيغة الارتباط التشعبي

لإضافة مستلم(ي) «نسخة إلى» (Cc) إلى دالة الارتباط التشعبي، أضف "؟cc=" كجزء من الصيغة على النحو التالي.

«?cc=» & C2
حيث تحتوي الخلية C2 على عنوان البريد الإلكتروني للمستلم في نسخة الكربون (CC).

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

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


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

لإضافة سطر الموضوع إلى دالة الارتباط التشعبي، أضف «&subject=» كجزء من الصيغة على النحو التالي:

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

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

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


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

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

لإضافة نص الرسالة إلى صيغة الارتباط التشعبي، أضف «&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» للحصول على النتيجة.

حدّد الخلية التي تحتوي على هذه الصيغة، ثم اسحب «مقبض الملء التلقائي» (AutoFill Handle) لأسفل لإنشاء عناوين بريد إلكتروني إضافية. راجع لقطة الشاشة:


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

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

1. انقر بزر الماوس الأيمن على الخلية التي ترغب في إدراج رابط تشعبي بها، ثم اختر «رابط» (Link) من القائمة المنبثقة.

2. في مربع الحوار «إنشاء ارتباط تشعبي» الذي يظهر، قم بالتهيئة على النحو التالي.

2.1) حدد «عنوان البريد الإلكتروني» في الجزء الأيسر.
2.2) في مربع النص «النص المراد عرضه»، اكتب النص الذي تريد عرضه في الخلية؛
نصائح: لا يمكنك استخدام مراجع الخلايا في مربع الحوار هذا، لذا يجب عليك كتابة حقول البريد الإلكتروني يدويًا كما يلي.
2.3) في مربع النص «عنوان البريد الإلكتروني»، عليك كتابة عنوان البريد الإلكتروني التالية.
mailto:عنوان البريد الإلكتروني
يرجى استبدال النص «عنوان البريد الإلكتروني» بـ عنوان البريد الإلكتروني الفعلي الخاص بك. إذا كان لديك أكثر من عنوان البريد الإلكتروني واحد، فافصل بينها بفاصلة منقوطة.
2.4) في مربع النص «الموضوع»، يمكنك تحديد موضوع البريد الإلكتروني وجسم البريد الإلكتروني هنا مباشرةً. يرجى التهيئة كما يلي:
موضوع البريد الإلكتروني&body=محتوى البريد الإلكتروني
في هذه الحالة، أكتب "Monthly sale&body=Hi،%0AEmail received".
حيث يكون الموضوع هو Monthly sale؛
و
يكون محتوى البريد الإلكتروني كالتالي:
مرحباً،
تم استلام البريد الإلكتروني. (الرمز «%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»، انقر على «Insert» > «Module»، ثم الصق الكود التالي في نافذة «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». حدد قائمة عناوين البريد الإلكتروني، ثم انقر على «موافق» (OK).

لقطة شاشة لصندوق حوار "Kutools for Excel" الذي يطلب قائمة عناوين البريد الإلكتروني

ملاحظات:

1) إذا لم ترغب في ظهور مربع الحوار أعلاه وترغب في تحديد نطاق عنوان البريد الإلكتروني مباشرةً في الكود، يُرجى استبدال هذا السطر:
Set xRg = Application.InputBox(«Please select the addresses list:», «Kutools for 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

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

لقطة شاشة لنافذة رسالة البريد الإلكتروني مع تعبئة جميع عناوين البريد الإلكتروني في حقل "إلى"


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

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

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

2. في نافذة «Microsoft Visual Basic for Applications»، انقر على «Insert» > «Module»، ثم الصق الكود التالي في نافذة «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. ثم انقر على «Tools» > «References». في مربع حوار «References – VBAProject»، ابحث عن "Microsoft Outlook 16.0 Object Library" وفعّل خانة الاختيار الخاصة بها، ثم انقر على زر «موافق» (OK) لحفظ التغييرات.

لقطة شاشة لصندوق حوار "المراجع – VBAProject" في إكسل مع تحديد خيار مكتبة كائنات Microsoft Outlook 16.0

4. اضغط مفتاح "F5" لتشغيل الكود، وسيظهر مربع حوار «Kutools لـ Excel». حدد قائمة عناوين البريد الإلكتروني، ثم انقر «موافق» (OK).

لقطة شاشة لصندوق حوار "Kutools for Excel" الذي يطلب تحديد قائمة عناوين البريد الإلكتروني

ملاحظات:

1) إذا لم ترغب في ظهور مربع الحوار أعلاه وترغب في تحديد نطاق عنوان البريد الإلكتروني مباشرةً في الكود، يُرجى استبدال هذا السطر:
Set xRg = Application.InputBox(«Please select the addresses list:», «Kutools for 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 تلقائيًا، كل منها يتضمّن عنوانًا واحدًا من قائمة العناوين في حقل «إلى»، كما هو موضح في لقطة الشاشة أدناه.

لقطة شاشة لعدة نوافذ رسائل Outlook مع عناوين بريد إلكتروني منفصلة في حقل "إلى"

5. أخيرًا، انقر على زر «إرسال» (Send) لإرسال الرسائل الإلكترونية واحدة تلو الأخرى.


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

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

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

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


2.1.1 إرسال ملف معين كمرفق

يمكنك استخدام كود VBA التالي لإرسال ملف واحد أو أكثر من مجلد ما كمرفقات عبر البريد الإلكتروني مباشرةً من Excel.

1. اضغط مفتاحَي «Alt» + "F11".

2. في نافذة «Microsoft Visual Basic for Applications» المفتوحة، انقر «Insert» > «Module»، ثم الصق كود 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. ثم انقر «أدوات» > «مراجع». في مربع الحوار «المراجع – مشروع VBA»، ابحث عن «مكتبة كائنات Microsoft Outlook 16.0» وحددها، ثم انقر زر «موافق» لحفظ التغييرات.

لقطة شاشة لصندوق حوار "المراجع – VBAProject" في إكسل مع تحديد خيار مكتبة كائنات Microsoft Outlook 16.0

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

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

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

لقطة شاشة لنافذة رسالة Outlook مع عرض الملفات المحددة كمرفقات


2.1.2 إرسال ورقة العمل الحالية كمرفق

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

1. اضغط مفتاحي «Alt» + "F11".

2. في نافذة «Microsoft Visual Basic for Applications» المفتوحة، انقر «Insert» > «Module»، ثم الصق كود 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 = " Please check and read this document.""؛
3) في السطرين التاليين:
.CC = «email address»
.BCC = «email address»
إذا أردت إضافة مستلمي نسخة الكربون (cc) ونسخة الكربون المخفية (bcc)، استبدل النص «عنوان البريد الإلكتروني» في الأسطر بـ عنوان البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي نسخة الكربون (cc) ونسخة الكربون المخفية (bcc)، فقط أضف أبستروف'قبل كل سطر.

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

لقطة شاشة لنافذة رسالة Outlook مع ورقة العمل الحالية المحفوظة والمرفقة كمصنف إكسل

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


2.1.3 إرسال المصنف الحالي كمرفق

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

1. اضغط مفتاحي «Alt» + "F11".

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

كود 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 = " Please check and read this document.""؛
3) في السطرين التاليين:
.CC = «email address»
.BCC = «email address»
إذا أردت إضافة مستلمي نسخة الكربون (cc) ونسخة الكربون المخفية (bcc)، استبدل النص «عنوان البريد الإلكتروني» في الأسطر بـ عنوان البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي نسخة الكربون (cc) ونسخة الكربون المخفية (bcc)، فقط أضف أبستروف ' قبل كل سطر.

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

لقطة شاشة لنافذة رسالة Outlook مع مصنف العمل الحالي المرفق تلقائيًا


2.1.4 إرسال المصنف بالكامل كمرفق PDF

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

1. اضغط مفتاحي «Alt» + "F11".

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

كود 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)، استبدل النص «عنوان البريد الإلكتروني» في الأسطر بـ عنوان البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي نسخة الكربون (cc) ونسخة الكربون المخفية (bcc)، فقط أضف أبستروف ' قبل كل سطر.
4) سيكون اسم ملفات PDF هو نفسه اسم المصنف الأصلي. وسيتم أيضًا إضافة الوقت الذي تقوم فيه بتشغيل الكود إلى اسم المصنف. إذا لم تكن بحاجة إلى إضافة الطابع الزمني إلى اسم الملف، يُرجى إزالة & Format(Now، «dd-mmm-yy h-mm-ss») من السطر التالي.
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -[[PH_372]], vbTextCompare) - [[PH_371]])) & Format(Now, «dd-mmm-yy h-mm-ss») & «.pdf»

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

لقطة شاشة لنافذة رسالة Outlook مع مصنف العمل الحالي المرفق كملف PDF


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

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

1. اضغط مفتاحي «Alt» + "F11".

2. في نافذة «Microsoft Visual Basic for Applications» المفتوحة، انقر «Insert» > «Module». بعد ذلك، الصق كود 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)، استبدل النص «عنوان البريد الإلكتروني» في الأسطر بـ عنوان البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي نسخة الكربون (cc) ونسخة الكربون المخفية (bcc)، فقط أضف أبستروف ' قبل كل سطر.
4) سيكون اسم ملفات PDF كالتالي: اسم المصنف الأصلي_اسم ورقة العمل الأصلية. في هذه الحالة، سيكون اسم ملف PDF هو Monthly sales_sales report.

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

لقطة شاشة لنافذة رسالة Outlook مع ورقة العمل الحالية المرفقة كملف PDF


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

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

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

كود VBA 1: يحافظ هذا الكود على توقيع Outlook الخاص بك.

كود VBA 2: يُمكّنك هذا الكود من إرسال ورقة العمل الحالية كمرفق بصيغة PDF.

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

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

كود VBA 2: إرسال ورقة العمل الحالية كمرفق 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»، انقر «Insert» > «Module». بعد ذلك، الصق كود VBA أعلاه 2 في نافذة «Module (Code)».

3. للحفاظ على التوقيع الافتراضي لـ Outlook في رسائل البريد الإلكتروني المرسلة من Excel، يتعيّن عليك تعديل كود VBA 2 بالشكل التالي:

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

لقطة شاشة تُظهر كود VBA المعدّل مع استبدال سطر .Body ووضع .Display تحت 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 الافتراضي تلقائيًا في نهاية نص البريد الإلكتروني.

لقطة شاشة لبريد إلكتروني في Outlook مع إدراج التوقيع الافتراضي تلقائيًا في نهاية نص البريد


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

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

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

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

1. في ورقة العمل التي تحتوي على جدول المبيعات، انقر بزر الماوس الأيمن على لسان الورقة، ثم اختر «View code» من القائمة المنسدلة.

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

كود 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)، استبدل النص «عنوان البريد الإلكتروني» في الأسطر بـ عنوان البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي نسخة الكربون (cc) ونسخة الكربون المخفية (bcc)، فقط أضف أبستروف ' قبل كل سطر.

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

لقطة شاشة لبريد إلكتروني تم إنشاؤه في Outlook عندما تتجاوز القيمة في الخلية D6 العدد 10000 في إكسل


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

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

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

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

كود 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 = «Worksheet modified».
4) في السطرين التاليين:
.CC = «Email Address»
.BCC = «Email Address»
إذا أردت إضافة مستلمي نسخة الكربون (cc) ونسخة الكربون المخفية (bcc)، استبدل النص «عنوان البريد الإلكتروني» في الأسطر بـ عنوان البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي نسخة الكربون (cc) ونسخة الكربون المخفية (bcc)، فقط أضف أبستروف ' قبل كل سطر.

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

لقطة شاشة لبريد إلكتروني تم إنشاؤه في Outlook عند تغيّر القيمة في الخلية B14


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 = »The workbook has been updated"" and ".Body = "Hi،" & Chr([[PH_422]]) & Chr(13) & "File is now updated.«».
3) في السطرين التاليين:
.CC = «Email Address»
.BCC = «Email Address»
إذا أردت إضافة مستلمي النسخة الكربونية (cc) والنسخة الكربونية المخفية (bcc)، فاستبدل النص «عنوان البريد الإلكتروني» في السطرين بـ عنوان البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي النسخة الكربونية (cc) والنسخة الكربونية المخفية (bcc)، فما عليك سوى وضع علامة تعليق (apostrophe) ' قبل كل سطر.

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

لقطة شاشة تُظهر بريد Outlook مع مصنف العمل الحالي مرفقًا وجاهزًا للإرسال تلقائيًا

نصائح: إذا كنت تستخدم هذا المصنف بشكل متكرر، ننصحك بحفظه كـ «مصنف Excel مُمكَّن للماكرو» للاحتفاظ بسكربت VBA لاستخدامه مستقبلاً. اتبع الخطوات التالية:

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

لقطة شاشة لحوار "حفظ باسم" في إكسل تُظهر خيار حفظ المصنف كمصنف إكسل مفعّل بماكرو


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

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

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

2. في نافذة «مايكروسوفت فيجوال بيسك للتطبيقات»، انقر فوق «إدراج» > «وحدة»، ثم الصق كود VBA التالي في نافذة الوحدة.

كود VBA 1: إرسال المصنف الحالي كمرفق من 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» في جزء «المشروع»، ثم الصق كود VBA التالي في نافذة «ThisWorkbook (Code)».

لقطة شاشة لمُحرر كود VBA مع حدث "Workbook_Open" ودالة "Application.OnTime" لجدولة إرسال البريد الإلكتروني

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

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

ملاحظات:

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

4. احفظ الأكواد، ثم احفظ المصنف كمصنف Excel مُمكَّن للماكرو بالطريقة التالية.

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

لقطة شاشة لحوار "حفظ باسم" في إكسل تُظهر خيار حفظ المصنف كمصنف إكسل مفعّل بماكرو

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


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

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

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

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

4.1.1 إرسال نطاق كجزء من محتوى نص البريد الإلكتروني من Excel

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

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

2. في نافذة «مايكروسوفت فيجوال بيسك للتطبيقات»، انقر فوق «أدوات» > «مراجع». بعد ذلك، فعِّل خانة الاختيار الخاصة بـ «مكتبة كائنات Microsoft Outlook 16.0»، ثم انقر فوق «موافق» في مربع حوار «المراجع – VBAProject».

3. انقر فوق «إدراج» > «وحدة»، ثم الصق كود VBA التالي في نافذة «الوحدة (الكود)».

كود 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)، فاستبدل النص «عنوان البريد الإلكتروني» في السطرين بـ عنوان البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي النسخة الكربونية (cc) والنسخة الكربونية المخفية (bcc)، فما عليك سوى وضع علامة تعليق (apostrophe) ' قبل كل سطر.

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

لقطة شاشة لصندوق حوار Kutools for Excel حيث يتم تحديد نطاق من الخلايا لإرساله كجزء من نص البريد الإلكتروني

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

لقطة شاشة لبريد Outlook مع النطاق المحدد من إكسل مُدرجًا في نص البريد الإلكتروني


4.1.2 إرسال نطاق كمرفق من Excel

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

1. اضغط مفتاحي «Alt» + "F11".

2. في نافذة «مايكروسوفت فيجوال بيسك للتطبيقات» المفتوحة، انقر فوق «إدراج» > «وحدة»، ثم الصق كود VBA التالي في نافذة «الوحدة (الكود)».

كود 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 = »Monthly sales for 2021"" و".Body = "Hello، please check and read this document.""؛
3) في السطرين التاليين:
.CC = «email address»
.BCC = «email address»
إذا أردت إضافة مستلمي النسخة الكربونية (cc) والنسخة الكربونية المخفية (bcc)، فاستبدل النص «عنوان البريد الإلكتروني» في السطرين بـ عنوان البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي النسخة الكربونية (cc) والنسخة الكربونية المخفية (bcc)، فما عليك سوى وضع علامة تعليق (apostrophe) ' قبل كل سطر.

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

لقطة شاشة لصندوق حوار Kutools for Excel حيث يتم تحديد نطاق من الخلايا لإرساله كمرفق في بريد إلكتروني

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

لقطة شاشة لبريد Outlook مع النطاق المحدد من إكسل المحفوظ كمرفق


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

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

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

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

2. اضغط مفاتيح «Alt» + "F11" لفتح نافذة «مايكروسوفت فيجوال بيسك للتطبيقات». ثم انقر فوق «إدراج» > «وحدة»، والصق كود VBA (الخاص بإرسال المصنف الحالي كمرفق من Excel) في نافذة «الوحدة (الكود)».

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

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

3. اضغط مفاتيح «Alt» + «Q» لإغلاق نافذة «مايكروسوفت فيجوال بيسك للتطبيقات».

4. الآن، قم بتعيين الماكرو لزر الأمر: انقر بزر الماوس الأيمن على الزر، ثم اختر «عرض الكود» من القائمة المنبثقة.

5. بعد ذلك، ستظهر نافذة «مايكروسوفت فيجوال بيسك للتطبيقات»، حيث يمكنك رؤية السطرين التاليين مدرَجين في نافذة «ورقة العمل (الكود)».

Private Sub CommandButton1_Click()
End Sub

لقطة شاشة لنافذة Microsoft Visual Basic for Applications تُظهر كود CommandButton1_Click

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

لقطة شاشة لتعديل كود VBA لتعيين ماكرو موجود إلى زر الأوامر

7. اضغط مفاتيح «Alt» + «Q» لإغلاق «محرر فيجوال بيسك»، ثم انقر فوق «المطوّر» > «وضع التصميم» لإيقاف تمكين وضع التصميم.

لقطة شاشة لإيقاف تشغيل وضع التصميم في تبويب المطور

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


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

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

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

كود VBA 1:

Dim OutlookMail As Outlook.MailItem

كود VBA 2:

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» بكود VBA 1؛
2) أضف كود VBA 2 أسفل السطر «On Error Resume Next» في كودك. بعد ذلك، حدّد عنوان البريد الإلكتروني التي ستستخدمها لإرسال البريد الإلكتروني في كود VBA 2.

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

1. اضغط مفاتيح «Alt» + "F11". في نافذة «مايكروسوفت فيجوال بيسك للتطبيقات»، انقر فوق «أدوات» > «مراجع». بعد ذلك، فعِّل خانة الاختيار «مكتبة كائنات Microsoft Outlook 16.0»، ثم انقر فوق «موافق» في مربع حوار «المراجع – VBAProject».

لقطة شاشة لصندوق حوار "المراجع – VBAProject" في إكسل مع تحديد خيار مكتبة كائنات Microsoft Outlook 16.0

2. انقر فوق «إدراج» > «وحدة»، ثم الصق كود VBA التالي في نافذة «الوحدة (الكود)».

كود 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 أيام من اليوم (بافتراض أن التاريخ الحالي هو 4 أغسطس 2022)، لإبلاغهم بأن المشروع على وشك الانتهاء.

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

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

كود 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 0 Then
3) في السطر «.To = xxx@aaa.com»، يُرجى استبدال «xxx@aaa.com» بعنوان عنوان البريد الإلكتروني الفعلي للمستلم. إذا كنت بحاجة إلى أكثر من عنوان البريد الإلكتروني واحد، فيُرجى فصلها بفواصل منقوطة.
4) غيّر موضوع البريد الإلكتروني في السطر «.Subject = »Worksheet modified"".
5) في السطرين التاليين:
.CC = «Email Address»
.BCC = «Email Address»
إذا أردت إضافة مستلمي النسخة الكربونية (cc) والنسخة الكربونية المخفية (bcc)، فاستبدل النص «عنوان البريد الإلكتروني» في السطرين بـ عنوان البريد الإلكتروني التي تحتاجها.
إذا لم تكن بحاجة إلى مستلمي النسخة الكربونية (cc) والنسخة الكربونية المخفية (bcc)، فما عليك سوى وضع علامة تعليق (apostrophe) ' قبل كل سطر.

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

لقطة شاشة لبريدَيْن إلكترونيَّيْن تم إنشاؤهما تلقائيًا استنادًا إلى شروط مطابقة تواريخ انتهاء الصلاحية في إكسل


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 أداةً بالغة الفائدة في أعمالنا اليومية. وقد غطّى هذا المقال مواضيع شاملة حول هذه الميزة؛ لذا إذا كانت لديك مواضيع إضافية أو حلول أكثر سهولة، يُرجى ترك تعليق لإعلامي بها.

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

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

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


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

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

جميع الإضافات من Kutools في برنامج تثبيت واحد!

Kutools for Office حزمةٌ تحتوي على إضافاتٍ مخصصة لتطبيقات Excel وWord وOutlook وPowerPoint، إلى جانب Office Tab Pro، مما يجعلها الخيار المثالي للفِرق التي تعمل عبر تطبيقات Office.

ExcelWordOutlookTabsPowerPoint
  • حزمة شاملة واحدة— إضافات Excel وWord وOutlook وPowerPoint بالإضافة إلى Office Tab Pro
  • برنامج تثبيت واحد، ترخيص واحد— الإعداد خلال دقائق (جاهز لـ MSI)
  • يعمل بشكل أفضل معًا— إنتاجية ميسَّرة عبر تطبيقات Office
  • تجربة مجانية لمدة 30 يومًا بكامل الميزات— بدون تسجيل، بدون بطاقة ائتمان
  • أفضل قيمة— وفِّر مقارنةً بشراء الإضافات بشكل منفصل