دليل Excel – إرسال رسائل البريد الإلكتروني من Excel
عادةً ما نستخدم برامج البريد الإلكتروني مثل 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])
المعاملات
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=" كجزء من الصيغة كما يلي.
يجب أن تكون الصيغة في الخلية F2 كما يلي:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 إضافة سطر الموضوع إلى صيغة Hyperlink
لإضافة سطر الموضوع إلى دالة Hyperlink، يرجى إضافة "&subject=" كجزء من الصيغة كما يلي.
يجب أن تبدو الصيغة في الخلية F2 الآن كما يلي:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 إضافة نص الرسالة مع فواصل الأسطر إلى صيغة Hyperlink
الخطوة الأخيرة هي إضافة نص الرسالة إلى صيغة Hyperlink. كما ترى في المثال، هناك سطران من النص في الخلية E2 مفصولان بفاصل أسطر، وتريد الحفاظ على فاصل الأسطر في نص البريد الإلكتروني. هل يتعرف Outlook على فاصل الأسطر في هذه الحالة؟ دعنا نتحقق من ذلك.
لإضافة نص الرسالة إلى صيغة Hyperlink، تحتاج إلى إضافة “&body=" كجزء من الصيغة كما يلي.
تظهر الصيغة في الخلية 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. في مربع الحوار المنبثق "إدراج ارتباط تشعبي"، تحتاج إلى التكوين كما يلي.

عند النقر على الرابط التشعبي، سيتم إنشاء بريد إلكتروني في Outlook مع الحقول المحددة (إلى، الموضوع، نص الرسالة) كما هو موضح في لقطة الشاشة أدناه.
ملاحظات:
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. حدد قائمة عناوين البريد الإلكتروني وانقر على "موافق".
ملاحظات:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
بعد تشغيل الكود، ستظهر جميع عناوين البريد الإلكتروني في النطاق المحدد في حقل إلى في نافذة الرسالة. انظر لقطة الشاشة:
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" ثم انقر على زر "موافق" لحفظ التغييرات.
4. اضغط على مفتاح "F5" لتشغيل الكود وستظهر نافذة Kutools لـ Excel. حدد قائمة عناوين البريد الإلكتروني وانقر على "موافق".
ملاحظات:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
في هذا المثال، هناك ستة عناوين بريد إلكتروني في النطاق المحدد، لذا سيتم إنشاء ست نوافذ رسائل Outlook تلقائيًا مع عنوان بريد إلكتروني منفصل في حقل إلى كما هو موضح في لقطة الشاشة أدناه.
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
ملاحظات:
3. ثم انقر على "أدوات" > "مراجع". في مربع الحوار "مراجع – VBAProject"، ابحث وحدد مربع "Microsoft Outlook16.0 Object Library" ثم انقر على زر "موافق" لحفظ التغييرات.
4. اضغط على مفتاح "F5" لتشغيل الكود، ثم ستظهر نافذة "تصفح"، يرجى تحديد الملفات التي تحتاج إلى إرفاقها في البريد الإلكتروني، ثم انقر على "موافق".
بعد ذلك ستظهر نافذة رسالة. يمكنك رؤية الملفات المحددة معروضة كمرفقات في حقل المرفقات.
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
ملاحظات:
3. اضغط على مفتاح "F5" لتشغيل الكود، ثم سيتم حفظ ورقة العمل الحالية كمصنف Excel وإدراجها تلقائيًا في نافذة الرسالة كمرفق. انظر لقطة الشاشة:
ملاحظة: المصنف المرفق الذي يحتوي فقط على ورقة العمل الحالية يحمل نفس اسم المصنف الأصلي. كما يتم إضافة وقت تشغيل الكود إلى اسم المصنف أيضًا.
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
ملاحظات:
3. اضغط على مفتاح "F5" لتشغيل الكود، ثم سيتم إدراج أدوات المصنف الحالية تلقائيًا في نافذة الرسالة كمرفق. انظر لقطة الشاشة:
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
ملاحظات:
3. اضغط على مفتاح "F5" لتشغيل الكود. ثم سيتم إدراج أدوات المصنف الحالية تلقائيًا في نافذة رسالة جديدة كمرفق PDF. انظر لقطة الشاشة:
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
ملاحظات:
3. اضغط على مفتاح "F5" لتشغيل الكود. ثم سيتم إدراج ورقة العمل الحالية تلقائيًا في نافذة رسالة جديدة كمرفق PDF. انظر لقطة الشاشة:
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 كما يلي:
إليك الكود الكامل بعد التعديل.
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 الافتراضي تلقائيًا في نهاية نص البريد الإلكتروني.
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
ملاحظات:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
من الآن فصاعدًا، عندما تتجاوز القيمة في الخلية D6 مقدار10000، سيتم إنشاء بريد إلكتروني كما هو موضح في لقطة الشاشة أدناه.
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
ملاحظات: في الكود،
من الآن فصاعدًا، عندما تتغير قيمة الخلية B14، سيتم إنشاء رسالة Outlook تلقائيًا كما هو موضح في لقطة الشاشة أدناه.
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
ملاحظات: في الكود،
3. من الآن فصاعدًا، عند حفظ أدوات المصنف بالضغط على مفاتيح "Ctrl" + "S" أو النقر على زر "حفظ"، سيتم إنشاء بريد إلكتروني في Outlook تلقائيًا. يمكنك رؤية أن أدوات المصنف الحالية مرفقة كمرفق وتم تعبئة الحقول بالمحتوى المحدد. انظر لقطة الشاشة:
نصيحة: إذا كنت تستخدم أدوات المصنف هذه بشكل متكرر، نوصي بحفظها كـ "مصنف Excel يدعم وحدات الماكرو" للاحتفاظ بكود VBA للاستخدام المستقبلي. الخطوات كما يلي.
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)".
كود VBA2: إرسال بريد إلكتروني تلقائيًا في وقت محدد
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
ملاحظات:
4. احفظ الأكواد ثم احفظ أدوات المصنف كـ مصنف 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 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
ملاحظات: في الكود،
4. اضغط على مفتاح "F5" لتشغيل الكود. في مربع الحوار "Kutools لـ Excel" المنبثق، حدد نطاق الخلايا الذي تحتاج إلى إرساله كجزء من نص الرسالة، ثم انقر على "موافق". انظر لقطة الشاشة:
سيتم إنشاء بريد إلكتروني في Outlook تلقائيًا. يمكنك رؤية أن النطاق الذي حددته في ورقة العمل تم إدراجه في نص الرسالة. انظر لقطة الشاشة:
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
ملاحظات:
3. اضغط على مفتاح "F5" لتشغيل الكود. في مربع الحوار "Kutools لـ Excel" المنبثق، حدد نطاق الخلايا الذي تحتاج إلى إرساله كمرفق في البريد الإلكتروني، ثم انقر على "موافق". انظر لقطة الشاشة:
سيتم إنشاء بريد إلكتروني في Outlook تلقائيًا. وسيتم حفظ نطاق الخلايا الذي حددته في ورقة العمل كمصنف Excel وإرفاقه في نافذة الرسالة. انظر لقطة الشاشة:
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
6. أدخل اسم الماكرو الموجود داخل الإجراء الفرعي لزر الأمر.
7. اضغط على مفاتيح "Alt" + "Q" لإغلاق "محرر Visual Basic"، وانقر على "المطور" > "وضع التصميم" لإيقاف وضع التصميم.
الآن يمكنك النقر على زر الأمر لإرسال بريد إلكتروني مع أدوات المصنف الحالية كمرفق في البريد الإلكتروني.
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 أعلاه؟
في هذا المثال، سنحدد حساب بريد إلكتروني معين لإرسال أدوات المصنف الحالية كمرفق من Excel. يرجى اتباع الخطوات التالية.
1. اضغط على مفاتيح "Alt" + "F11". في نافذة "Microsoft Visual Basic for Applications"، انقر على "أدوات" > "مراجع". ثم حدد مربع "Microsoft Outlook16.0 Object Library" وانقر على "موافق" في مربع الحوار "مراجع – VBAProject".
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
ملاحظات: في الكود،
3. اضغط على مفتاح "F5" لتشغيل الكود. إذا تطابق تاريخ الانتهاء مع الشروط، سيتم إنشاء البريد الإلكتروني المناسب. في هذا المثال، سيتم إنشاء رسالتين كما هو موضح في لقطة الشاشة أدناه.
5. أداة عملية لمساعدتك على إرسال رسائل البريد الإلكتروني من Excel بسهولة
إذا كنت مبتدئًا في VBA، قد لا تكون الطرق أعلاه سهلة بالنسبة لك. هنا نوصي بميزة "إرسال البريد الإلكتروني" في Kutools لـ Excel، حيث يمكنك من خلال هذه الميزة إرسال رسائل البريد الإلكتروني من Excel بسهولة ببضع نقرات فقط. يرجى اتباع الخطوات التالية.
5.1 إنشاء قائمة مراسلة بسهولة تتضمن حقول البريد الإلكتروني التي تحتاجها
قبل تطبيق ميزة إرسال البريد الإلكتروني، تحتاج إلى إنشاء قائمة مراسلة تحتوي على حقول البريد الإلكتروني التي تحتاجها. هنا يمكن أن تساعدك ميزة إنشاء قائمة البريد الإلكتروني.
1. انقر على "Kutools Plus" > "إنشاء قائمة البريد الإلكتروني".
2. في نافذة "إنشاء قائمة البريد الإلكتروني" المفتوحة، تحتاج إلى التكوين كما يلي.
بعد ذلك سيتم إنشاء جدول قائمة بريد إلكتروني تجريبي كما هو موضح في لقطة الشاشة أدناه.
3. الآن تحتاج إلى استبدال البيانات الأصلية في العينة ببيانات الحقول الخاصة بك.
الآن بعد أن أنشأت جدول قائمة بريد إلكتروني، يرجى متابعة تطبيق ميزة "إرسال البريد الإلكتروني" لإرسال الرسائل من Excel بناءً على الحقول التي أنشأتها.
Kutools لـ Excel - قم بتعزيز Excel بأكثر من 300 أدوات أساسية. استمتع بميزات ذكاء اصطناعي مجانية بشكل دائم! احصل عليه الآن
5.2 إرسال رسائل البريد الإلكتروني بسهولة مع الحقول التي أنشأتها في قائمة البريد الإلكتروني
بعد إنشاء قائمة البريد الإلكتروني (انقر لمعرفة الطريقة) التي تحتوي على الحقول التي قد تحتاجها في رسائلك، يمكنك الآن إرسال رسائل البريد الإلكتروني من Excel بهذه الحقول.
1. حدد قائمة البريد الإلكتروني بالكامل، ثم انقر على "Kutools Plus" > "إرسال البريد الإلكتروني".
2. في مربع الحوار "إرسال البريد الإلكتروني"، يرجى إجراء التكوين التالي.
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، إذا كانت هناك مواضيع أخرى أو حلول أسهل، يرجى ترك تعليق لإخباري.
أفضل أدوات الإنتاجية لمكتب العمل
عزز مهاراتك في Excel مع Kutools لـ Excel، واختبر الكفاءة كما لم يحدث من قبل. Kutools لـ Excel يقدم أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير
- تمكين تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint.
- افتح وأنشئ عدة مستندات في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ منفصلة.
- يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات بالماوس يومياً!