برنامج Excel التعليمي - إرسال رسائل بريد إلكتروني من Excel
عادة ، نستخدم عملاء البريد الإلكتروني مثل Outlook و Gmail وما إلى ذلك لإرسال رسائل البريد الإلكتروني. ولكن ، يقوم العديد من الأشخاص بتخزين البيانات في مصنفات Excel ويحتاجون إلى إرسال بعض البيانات مع الآخرين أثناء العمل معها. لذلك ، يحتاجون إلى إرسال رسائل بريد إلكتروني مباشرة من مصنف Excel ، مما يوفر وقت تشغيل عميل البريد الإلكتروني. سيوضح لك هذا البرنامج التعليمي خطوة بخطوة كيفية إرسال رسائل البريد الإلكتروني من Excel في ظل ظروف مختلفة.
ملاحظات: قبل تطبيق الطرق التالية ، تحتاج إلى تكوين عميل بريد إلكتروني في Outlook على جهاز الكمبيوتر الخاص بك وتعيينه كعميل البريد الإلكتروني الافتراضي الخاص بك.
جدول المحتويات: [ يخفي ]
1. أساسيات إرسال رسائل البريد الإلكتروني من Excel
يقدم هذا القسم أساسيات إرسال رسائل البريد الإلكتروني من Excel.
1.1 إرسال رسائل بريد إلكتروني من Excel مع وظائف Excel المضمنة
إذا كنت تريد فقط إرسال رسائل بريد إلكتروني بسيطة من Excel ، بما في ذلك حقول "إلى" و "الموضوع" و "نسخة" و "النص الأساسي" فقط. يمكن أن تساعد الوظائف المضمنة في Excel.
1.1.1 إرسال بريد إلكتروني من Excel مع صيغة
كما هو موضح في الجدول أدناه ، لإرسال رسائل بريد إلكتروني مختلفة من Excel بناءً على الحقول المحددة ، يمكنك استخدام مراجع الخلايا للحقول المحددة لإنشاء صيغ ارتباط تشعبي مختلفة لإنجازها. بعد إنشاء الارتباطات التشعبية للبريد الإلكتروني ، يمكنك النقر فوق الارتباط التشعبي الذي تحتاجه لإرسال بريد إلكتروني تلقائيًا.
ملحوظة: إذا كان هناك أكثر من مستلم واحد في حقلي "إلى" أو "نسخة" ، فالرجاء فصلهم بفواصل منقوطة.
ينقسم هذا القسم إلى أربعة أجزاء لتوضيح خطوات إضافة عنوان البريد الإلكتروني ومستلم (مستلمي) نسخة وسطر الموضوع والنص الأساسي بشكل منفصل إلى صيغة الارتباط التشعبي. الرجاء القيام بما يلي.
بناء الجملة وحجج HYPERLINK الوظيفة هي على النحو التالي.
بناء الجملة
HYPERLINK(link_location, [friendly_name])
الحجج
1.1.1.1 أضف عنوان بريد إلكتروني إلى صيغة الارتباط التشعبي
هنا نستخدم "mailto:" كجزء من الصيغة لإضافة مستلم بريد إلكتروني. في هذا المثال ، يكون عنوان البريد الإلكتروني للمستلم الأول موجودًا في الخلية B2 ، لذلك نحتاج إلى إضافة "mailto:" والرجوع إليه في الخلية B2.
"mailto:" & B2
1. حدد خلية لعرض الارتباط التشعبي. في هذه الحالة ، أحدد الخلية F2.
2. ثم أدخل الصيغة التالية فيه.
=HYPERLINK("mailto:"&B2)
ملاحظات: إذا قمت بالضغط على أدخل مفتاح ، سيتم إنشاء ارتباط تشعبي كما هو موضح في لقطة الشاشة أدناه. عند النقر فوق الارتباط ، سيتم إنشاء بريد إلكتروني في Outlook وسيتم ملء عنوان البريد الإلكتروني للمستلم في الحقل "إلى" تلقائيًا.
تمت إضافة عنوان البريد الإلكتروني للمستلم الآن إلى صيغة الارتباط التشعبي. الرجاء متابعة الخطوات التالية لإضافة سطر الموضوع ومستلم (مستلمي) نسخة ونص أساسي حسب حاجتك.
1.1.1.2 إضافة مستلم (مستلمين) نسخة إلى صيغة الارتباط التشعبي
لإضافة مستلم (مستلمين) نسخة إلى وظيفة الارتباط التشعبي ، يرجى إضافة "؟ cc =" كجزء من الصيغة على النحو التالي.
يجب أن تكون الصيغة في الخلية F2 كما يلي:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 إضافة سطر الموضوع إلى صيغة الارتباط التشعبي
لإضافة سطر الموضوع إلى وظيفة الارتباط التشعبي ، يرجى إضافة & الموضوع = " كجزء من الصيغة على النحو التالي.
يجب أن تبدو الصيغة في الخلية F2 الآن كما يلي:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 إضافة نص أساسي مع فواصل أسطر إلى صيغة الارتباط التشعبي
الخطوة الأخيرة هي إضافة النص الأساسي إلى صيغة الارتباط التشعبي. كما ترى في المثال ، يتم فصل سطرين من النص في E2 بفاصل أسطر ، وتريد الاحتفاظ بفاصل الأسطر في نص البريد الإلكتروني. هل يتعرف Outlook على فاصل الأسطر في هذه الحالة؟ دعنا نتحقق من ذلك.
لإضافة النص الأساسي إلى صيغة الارتباط التشعبي ، تحتاج إلى إضافة "& الجسم =" كجزء من الصيغة على النحو التالي.
يتم الآن عرض الصيغة في الخلية F2 على النحو التالي:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
ملحوظة: إذا قمت بالضغط على أدخل مفتاح وانقر على الرابط. يمكنك أن ترى في البريد الإلكتروني الجديد أن المحتويات الموجودة في نص البريد الإلكتروني تُعرض في نفس السطر.
لعرض نص البريد الإلكتروني في سطور منفصلة ، تحتاج إلى تعديل محتوى الخلية عن طريق إضافة رمز حرف إرجاع الحرف ٪ 0 أ إلى النص حيث تريد إدراج فاصل أسطر. انظر لقطة الشاشة:
1.1.1.5 حدد النص الذي سيتم عرضه للارتباط التشعبي
في الخطوات المذكورة أعلاه ، انتهينا من وسيطة Link_location بحقول البريد الإلكتروني. هنا في هذا القسم ، سننهي الحجة التالية [friendly_name].
في هذه الحالة ، أريد أن تعرض خلية الارتباط التشعبي النص كـ "إرسال بالبريد الإلكتروني إلى xx"، حيث xx هو اسم المستلم في A2. لذلك ، يجب تغيير الصيغة في F2 إلى:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
اضغط على أدخل مفتاح للحصول على النتيجة.
حدد خلية الصيغة هذه واسحبها مقبض الملء التلقائي لأسفل لإنشاء ارتباطات تشعبية أخرى للبريد الإلكتروني. انظر لقطة الشاشة:
1.1.2 إرسال بريد إلكتروني من Excel باستخدام وظيفة الارتباط التشعبي
باستثناء استخدام صيغة الارتباط التشعبي أعلاه ، يمكنك إنشاء ارتباط تشعبي للبريد الإلكتروني يدويًا باستخدام ملف إدراج الارتباط التشعبي تعمل في Excel. سيوضح لك هذا القسم الخطوات.
1. انقر بزر الماوس الأيمن فوق بريد إلكتروني حيث تريد إدراج ارتباط تشعبي ، ثم حدد لينك من قائمة النقر بزر الماوس الأيمن.
2. في ظهرت أدخل ارتباط تشعبي مربع الحوار ، تحتاج إلى تكوين على النحو التالي.
عند النقر فوق الارتباط التشعبي ، سيتم إنشاء بريد إلكتروني في Outlook مع الحقول المحددة والموضوع والجسم كما هو موضح في لقطة الشاشة أدناه.
ملاحظة:
1.2 إرسال بريد إلكتروني إلى عدة مستلمين في الخلايا باستخدام برنامج VBA النصي
في المثال أعلاه ، يمكنك مشاهدة عناوين بريد إلكتروني متعددة معروضة في خلية مفصولة بفواصل منقوطة. إذا كانت لديك قائمة بعناوين البريد الإلكتروني كما هو موضح في لقطة الشاشة أدناه وترغب في إرسال بريد إلكتروني أو بريد إلكتروني مستقل إلى كل منهم ، فإن رمز VBA التالي يمكن أن يقدم لك خدمة.
1.2.1 إرسال بريد إلكتروني إلى عدة مستلمين في الخلايا باستخدام برنامج VBA النصي
1. في ورقة العمل التي تحتوي على جميع عناوين البريد الإلكتروني التي تريد إرسال البريد الإلكتروني إليها. اضغط على قديم + F11 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.
2. في ال ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق إدراج > وحدة، ثم الصق الكود التالي في ملف وحدة (كود) نافذة.
كود فبا: أرسل بريدًا إلكترونيًا إلى قائمة عناوين البريد الإلكتروني
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 مفتاح لتشغيل التعليمات البرمجية و كوتولس ل إكسيل ينبثق مربع الحوار. حدد قائمة عناوين البريد الإلكتروني وانقر OK.
الملاحظات:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
بعد تشغيل الرمز ، يتم عرض جميع عناوين البريد الإلكتروني في النطاق المحدد في الحقل "إلى" في نافذة الرسالة. انظر لقطة الشاشة:
1.2.2 إرسال رسائل البريد الإلكتروني بشكل منفصل إلى كل مستلم مدرج في الخلايا مع برنامج VBA النصي
يضيف الرمز أعلاه جميع عناوين البريد الإلكتروني في النطاق المحدد إلى الحقل "إلى" في نافذة الرسالة. إذا كنت ترغب في إرسال رسائل بريد إلكتروني إلى كل عنوان بريد إلكتروني مدرج في الخلايا بشكل منفصل دون السماح لهم برؤية عناوين البريد الإلكتروني لبعضهم البعض ، يمكنك تجربة البرنامج النصي التالي لـ VBA.
1. في ورقة العمل التي تحتوي على جميع عناوين البريد الإلكتروني التي تريد إرسال رسائل البريد الإلكتروني إليها. اضغط على قديم + F11 مفاتيح افتح نافذة Microsoft Visual Basic for Applications.
2. في ال ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق إدراج > وحدة، ثم قم بلصق التعليمة البرمجية التالية في نافذة الوحدة النمطية (الرمز).
كود فبا: أرسل رسائل بريد إلكتروني إلى كل عنوان بريد إلكتروني مدرج في الخلايا بشكل منفصل
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 Outlook 16.0 ثم انقر فوق OK زر لحفظ التغييرات.
4. اضغط على F5 مفتاح لتشغيل التعليمات البرمجية و كوتولس ل إكسيل ينبثق مربع الحوار. حدد قائمة عناوين البريد الإلكتروني وانقر حسنا.
الملاحظات:
.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. اضغط على قديم + F11 مفاتيح.
2. في الافتتاح ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق إدراج > وحدة. ثم الصق كود فبا التالي في نافذة الوحدة النمطية (كود).
رمز فبا: إرسال الملفات بالبريد الإلكتروني في مجلد كمرفقات من 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 = ""
.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 Outlook 16.0 ثم انقر فوق OK زر لحفظ التغييرات.
4. اضغط على F5 مفتاح لتشغيل الكود ، ثم أ تصفح نافذة منبثقة ، يرجى تحديد الملفات التي تريد إرفاقها في البريد الإلكتروني ، ثم النقر فوق OK.
ثم تنبثق نافذة رسالة. يمكنك رؤية الملفات المحددة معروضة كمرفقات في الحقل المرفقات.
2.1.2 أرسل ورقة العمل الحالية بالبريد الإلكتروني كمرفق
إذا كنت تريد إرسال ورقة العمل الحالية بالبريد الإلكتروني كمرفق من Excel ، فيمكنك تطبيق البرنامج النصي VBA في هذا القسم.
1. اضغط على قديم + F11 مفاتيح.
2. في الافتتاح ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق أدخل > وحدة. ثم الصق كود فبا التالي في ملف وحدة (كود) نافذة.
كود فبا: أرسل ورقة العمل الحالية بالبريد الإلكتروني كمرفق
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 = ""
.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. اضغط على قديم + F11 مفاتيح.
2. في الافتتاح ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق إدراج > وحدة. ثم الصق كود فبا التالي في نافذة الوحدة النمطية (كود).
كود فبا: أرسل المصنف الحالي بالبريد الإلكتروني كمرفق من إكسيل
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 = ""
.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. اضغط على قديم + F11 مفاتيح.
2. في الافتتاح ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق إدراج > وحدة. ثم الصق كود فبا التالي في نافذة الوحدة النمطية (كود).
كود فبا: أرسل المصنف بأكمله بالبريد الإلكتروني كمرفق 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 = ""
.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
على سبيل المثال ، يوجد مصنف باسم "المبيعات الشهرية" ، وقد انتهيت من جدول تقرير المبيعات في ورقة عمل تسمى "تقرير المبيعات" وتريد إرسال ورقة العمل هذه كملف PDF إلى زملائك. يمكن أن يقدم لك رمز VBA التالي خدمة.
1. اضغط على قديم + F11 مفاتيح.
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 = ""
.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 أدناه.
التعليمات البرمجية لـ VBA 1: تساعد التعليمات البرمجية في الاحتفاظ بتوقيع Outlook.
كود فبا 2: يساعد الكود في إرسال ورقة العمل الحالية بالبريد الإلكتروني كمرفق PDF.
كود VBA 1: احتفظ بتوقيع Outlook
.HTMLBody = "Email body" & "
" & .HTMLBody
كود فبا 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 = ""
.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. عادة ، تحتاج إلى الضغط على قديم + F11 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.
2. في ال ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق إدراج > وحدة. ثم الصق رمز فبا 2 أعلاه في نافذة الوحدة النمطية (الرمز).
3. للاحتفاظ بالتوقيع الافتراضي لبرنامج Outlook في البريد الإلكتروني المرسل من Excel ، تحتاج إلى تعديل رمز VBA 2 على النحو التالي:
هذا هو الكود الكامل بعد التعديل.
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 = ""
.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. في الافتتاح ميكروسوفت فيسوال باسيك للتطبيقات نافذة ، الصق رمز VBA التالي في ملف ورقة (كود) نافذة.
رمز فبا: إرسال بريد إلكتروني تلقائيًا عندما تصل الخلية إلى قيمة معينة في إكسيل
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 = ""
.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. في الافتتاح ميكروسوفت فيسوال باسيك للتطبيقات في النافذة ، قم بلصق رمز فبا التالي في نافذة الورقة (الرمز).
رمز فبا: إرسال بريد إلكتروني تلقائيًا عندما تتغير قيمة خلية محددة
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 = ""
.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. اضغط على قديم + F11 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.
2. في هذه النافذة ، انقر نقرًا مزدوجًا ThisWorkbook في ال حملات التبرع ، ثم الصق التعليمات البرمجية لـ VBA التالية في ملف ThisWorkbook (كود) نافذة.
رمز فبا: إرسال بريد إلكتروني تلقائيًا عند حفظ مصنف
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 = ""
.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. اضغط على قديم + F11 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.
2. في ال ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق إدراج > وحدة. ثم الصق رمز فبا التالي في نافذة الوحدة النمطية.
كود فبا 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 = ""
.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 (كود) نافذة.
كود فبا 2: إرسال بريد إلكتروني تلقائيًا في وقت محدد
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. اضغط على قديم + F11 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.
2. في ال ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق الأدوات > مراجع حسابات. ثم تحقق من ملف مكتبة كائنات Microsoft Outlook 16.0 مربع وانقر OK في ال المراجع - VBAProject صندوق المحادثة.
3. انقر إدراج > وحدة، ثم الصق التعليمات البرمجية لـ 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 = ""
.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 مفتاح لتشغيل الكود. في ظهرت كوتولس ل إكسيل في مربع الحوار ، حدد نطاق الخلايا التي تريد إرسالها كجزء من محتوى نص البريد الإلكتروني ، ثم انقر فوق OK. انظر لقطة الشاشة:
ثم سيتم إنشاء بريد إلكتروني في Outlook تلقائيًا. يمكنك أن ترى أن النطاق الذي حددته في ورقة العمل قد تم إدراجه في نص البريد الإلكتروني. انظر لقطة الشاشة:
4.1.2 إرسال نطاق بالبريد الإلكتروني كمرفق من Excel
إذا كنت بحاجة إلى إرسال مجموعة من الخلايا في ورقة عمل بالبريد الإلكتروني كمرفق من Excel. يمكنك تجربة رمز VBA التالي.
1. اضغط على قديم + F11 مفاتيح.
2. في الافتتاح ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق إدراج > وحدة. ثم الصق كود فبا التالي في ملف وحدة (كود) نافذة.
رمز فبا: إرسال نطاق بالبريد الإلكتروني كمرفق من 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 = ""
.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 مفتاح لتشغيل الكود. في ظهرت كوتولس ل إكسيل في مربع الحوار ، حدد نطاق الخلايا التي تريد إرسالها كمرفق في رسالة بريد إلكتروني ، ثم انقر فوق OK. انظر لقطة الشاشة:
ثم سيتم إنشاء بريد إلكتروني في Outlook تلقائيًا. ويتم حفظ نطاق الخلايا الذي حددته في ورقة العمل كمصنف Excel وإرفاقه في نافذة الرسالة. انظر لقطة الشاشة:
4.2 إرسال رسائل البريد الإلكتروني عند النقر فوق زر في Excel
إذا كنت بحاجة إلى النقر فوق زر أمر لتشغيل ماكرو لإرسال بريد إلكتروني من Excel ، على سبيل المثال ، أرسل المصنف الحالي كمرفق للآخرين عن طريق النقر فوق زر أمر في ورقة العمل. يمكنك اتباع الخطوات على النحو التالي لإنجازها.
1. انقر المطور > إدراج > زر الأمر (عنصر تحكم ActiveX). ثم ارسم زر أمر في ورقة العمل.
نصائح: إذا كان لديك بالفعل زر أمر ، فتخط هذه الخطوة.
2. اضغط على قديم + F11 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة او شباك. في النافذة ، انقر فوق إدراج > مودو، ثم الصق رمز VBA (الرمز المستخدم لإرسال المصنف الحالي بالبريد الإلكتروني كمرفق من Excel) في نافذة الوحدة النمطية (الرمز).
ملاحظات: هنا اسم الماكرو الذي قمت بإنشائه في الخطوة 2 هو إرسال مصنف.
3. اضغط على قديم + Q مفاتيح لإغلاق ميكروسوفت فيسوال باسيك للتطبيقات نافذة.
4. الآن أنت بحاجة إلى تعيين الماكرو إلى زر الأمر. انقر بزر الماوس الأيمن فوق زر الأمر ، وحدد عرض الرمز من قائمة النقر بزر الماوس الأيمن.
5. ثم ميكروسوفت فيسوال باسيك للتطبيقات نافذة منبثقة ، يمكنك رؤية السطرين التاليين مدرجين في ملف ورقة (كود) نافذة.
Private Sub CommandButton1_Click()
End Sub
6. أدخل اسم الماكرو الموجود داخل الإجراء الفرعي لزر الأمر.
7. اضغط على قديم + Q مفاتيح لإغلاق محرر Visual Basic، ثم انقر المطور > وضع التصميم لإيقاف وضع التصميم.
يمكنك الآن النقر فوق زر الأمر لإرسال بريد إلكتروني مع المصنف الحالي كمرفق في البريد الإلكتروني.
4.3 إرسال رسائل بريد إلكتروني من حساب بريد إلكتروني محدد
عادةً ، عند بدء تشغيل بريد إلكتروني من Excel برمز VBA ، يكون حساب البريد الإلكتروني الخاص بالمرسل هو الحساب الافتراضي في Outlook. لنفترض أنك قمت بتكوين العديد من حسابات البريد الإلكتروني في Outlook الخاص بك وتريد استخدام حساب معين لإرسال رسائل البريد الإلكتروني من Excel بدلاً من استخدام الحساب الافتراضي. يمكن أن يساعد رمز VBA التالي.
الرموز التالية ضرورية في هذه الحالة.
كود فبا 1:
Dim OutlookMail As Outlook.MailItem
كود فبا 2:
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
كيفية استخدام كود فبا أعلاه؟
في هذا المثال ، سنقوم بتحديد حساب بريد إلكتروني معين لإرسال المصنف الحالي كمرفق من Excel. الرجاء القيام بما يلي.
1. اضغط على قديم + F11 مفاتيح. في ال ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق الأدوات > مراجع حسابات. ثم تحقق من ملف مكتبة كائنات Microsoft Outlook 16.0 مربع وانقر OK في ال المراجع - VBAProject صندوق المحادثة.
2. انقر إدراج > وحدة. ثم الصق كود فبا التالي في ملف وحدة (كود) نافذة.
رمز 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("") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = ""
.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. في الافتتاح ميكروسوفت فيسوال باسيك للتطبيقات نافذة ، الصق رمز 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 ، فقد لا يكون من السهل عليك التعامل مع الطرق المذكورة أعلاه. هنا نوصي كوتولس ل إكسيلالصورة إرسال رسائل البريد الإلكتروني ميزة ، مع هذه الميزة ، يمكنك بسهولة إرسال رسائل البريد الإلكتروني من Excel بعدة نقرات فقط. الرجاء القيام بما يلي.
قبل التطبيق كوتولس ل إكسيلالرجاء قم بتنزيله وتثبيته أولاً.
5.1 أنشئ بسهولة قائمة بريدية تتضمن حقول البريد الإلكتروني التي تحتاجها
قبل تطبيق ميزة إرسال رسائل البريد الإلكتروني ، تحتاج إلى إنشاء قائمة بريدية تحتوي على حقول البريد الإلكتروني التي تحتاجها. هنا يمكن أن تساعد ميزة إنشاء قائمة بريدية.
1. انقر كوتولس بلس > إنشاء قائمة بريدية.
2. في الافتتاح إنشاء قائمة بريدية نافذة ، تحتاج إلى تكوين على النحو التالي.
ثم يتم إنشاء نموذج لجدول قائمة بريدية كما هو موضح في الصورة أدناه.
3. الآن أنت بحاجة إلى استبدال البيانات الأصلية في العينة ببياناتك الميدانية.
الآن قمت بإنشاء جدول قائمة بريدية. يرجى المضي قدما لتطبيق إرسال رسائل البريد الإلكتروني ميزة لإرسال رسائل البريد الإلكتروني من Excel بناءً على الحقول التي قمت بإنشائها.
إذا كنت ترغب في الحصول على نسخة تجريبية مجانية (30 يومًا) من هذه الأداة المساعدة ، الرجاء الضغط لتنزيلهثم انتقل لتطبيق العملية حسب الخطوات المذكورة أعلاه.
5.2 إرسال رسائل البريد الإلكتروني بسهولة بما في ذلك الحقول التي أنشأتها في القائمة البريدية
بعد إنشاء القائمة البريدية (انقر لمعرفة كيف) التي تحتوي على الحقول التي قد تحتاجها في رسائل البريد الإلكتروني الخاصة بك ، يمكنك الآن إرسال رسائل بريد إلكتروني من Excel مع هذه الحقول.
1. حدد القائمة البريدية بأكملها ، انقر فوق كوتولس بلس > إرسال رسائل البريد الإلكتروني.
2. في ال إرسال رسائل البريد الإلكتروني مربع الحوار ، يرجى إجراء التكوين التالي.
3. ثم أ كوتولس ل إكسيل ينبثق مربع الحوار لإخبارك بعدد رسائل البريد الإلكتروني المرسلة ، انقر فوق OK زر لإغلاق مربع الحوار هذا.
نصائح: يمكنك الذهاب الى المواد المرسلة مجلد في Outlook الخاص بك للتحقق من رسائل البريد الإلكتروني التي أرسلتها.
5.3 إرسال رسائل البريد الإلكتروني بسهولة باستخدام نص HTML (بما في ذلك الارتباط التشعبي والصورة وما إلى ذلك)
تتيح لك ميزة إرسال رسائل البريد الإلكتروني هذه إنشاء بريد إلكتروني بتنسيق html ، والذي يتضمن ارتباطًا تشعبيًا وصورة وأحجام خطوط مختلفة وألوان خطوط وما إلى ذلك.
بعد إنشاء قائمة بريدية تتضمن حقول البريد الإلكتروني التي تحتاجها,
عند تكوين مربع الحوار إرسال رسائل البريد الإلكتروني، يمكنك جعل محتوى الجسم ثريًا باستخدام الخيارات الموجودة على شريط الأدوات.
انظر اللقطة في الاسفل:
5.4 أدخل توقيع Outlook الافتراضي بسهولة عند إرسال رسائل البريد الإلكتروني
في الطريقة أعلاه ، أظهرنا رمز VBA لمساعدتك في إرسال رسائل البريد الإلكتروني مع توقيع Outlook الافتراضي. هنا مع ميزة إرسال رسائل البريد الإلكتروني ، تحتاج فقط إلى التحقق من أحد الخيارات ، ثم سيتم إدراج توقيع Outlook الافتراضي في رسائل البريد الإلكتروني التي أرسلتها من Excel.
بعد إنشاء قائمة بريدية تتضمن حقول البريد الإلكتروني التي تحتاجها,
متى تكوين مربع الحوار إرسال رسائل البريد الإلكتروني، تحتاج إلى النقر فوق مزيد من الخيارات > استخدم إعدادات توقيع Outlook.
ملاحظات: الرجاء التأكد من وجود علامة اختيار معروضة قبل خيار استخدام إعدادات توقيع Outlook.
عندما يتلقى المستلمون البريد الإلكتروني ، يمكنهم رؤية توقيع Outlook الافتراضي المعروض في نهاية نص البريد الإلكتروني.
5.5 إرسال رسائل البريد الإلكتروني بسهولة من حساب بريد إلكتروني محدد
لاستخدام حساب بريد إلكتروني معين لإرسال رسائل البريد الإلكتروني من Excel بدلاً من استخدام الحساب الافتراضي ، يمكن أن تساعد ميزة إرسال رسائل البريد الإلكتروني أيضًا في إنجازها بسهولة.
بعد إنشاء قائمة بريدية تتضمن حقول البريد الإلكتروني التي تحتاجها,
متى تكوين مربع الحوار إرسال رسائل البريد الإلكتروني، تحتاج إلى النقر فوق مزيد من الخيارات > ارسلت من، ثم انقر فوق حساب البريد الإلكتروني الذي تريد إرسال رسائل البريد الإلكتروني منه.
ملاحظات: بعد تحديد حساب البريد الإلكتروني ، سيتم عرض علامة اختيار قبله.
انقر هنا لمعرفة المزيد حول ميزة إرسال رسائل البريد الإلكتروني هذه.
إذا كنت ترغب في الحصول على نسخة تجريبية مجانية (30 يومًا) من هذه الأداة المساعدة ، الرجاء الضغط لتنزيلهثم انتقل لتطبيق العملية حسب الخطوات المذكورة أعلاه.
في الختام ، يعد إرسال رسائل البريد الإلكتروني من Excel مفيدًا جدًا في عملنا اليومي. تتناول هذه المقالة موضوعات أكثر شمولاً لرسائل البريد الإلكتروني المرسلة من Excel ، إذا كانت هناك مواضيع أخرى أو حلول أسهل ، فيرجى ترك تعليق لإعلامي.
أفضل أدوات إنتاجية المكتب
عزز مهاراتك في Excel باستخدام Kutools for Excel، واختبر كفاءة لم يسبق لها مثيل. يقدم Kutools for Excel أكثر من 300 ميزة متقدمة لتعزيز الإنتاجية وتوفير الوقت. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
يجلب Office Tab الواجهة المبوبة إلى Office ، ويجعل عملك أسهل بكثير
- تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
- فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
- يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!