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

كيفية تصدير رسائل البريد الإلكتروني من عدة مجلدات / مجلدات فرعية للتميز في Outlook؟

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

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

علامة تبويب Office - قم بتمكين التحرير والتصفح المبوب في المكتب ، وجعل العمل أسهل بكثير ...
Kutools for Outlook - يجلب 100 ميزة متقدمة قوية إلى Microsoft Outlook
  • CC السيارات / BCC حسب القواعد عند إرسال البريد الإلكتروني ؛ إعادة توجيه تلقائي تعدد رسائل البريد الإلكتروني حسب القواعد ؛ رد آلي بدون خادم صرف ، والمزيد من الميزات التلقائية ...
  • تحذير BCC - إظهار الرسالة عندما تحاول الرد على الكل إذا كان عنوان بريدك في قائمة BCC ؛ تذكير عند فقدان المرفقات، والمزيد من ميزات التذكير ...
  • رد (الكل) بكل المرفقات في محادثة البريد ؛ الرد على العديد من رسائل البريد الإلكتروني في وقت واحد ؛ إضافة تحية تلقائية عند الرد إضافة التاريخ والوقت تلقائيًا إلى الموضوع ...
  • أدوات المرفقات: فصل تلقائي ، ضغط الكل ، إعادة تسمية الكل ، حفظ تلقائي للكل ... تقرير سريع، عد الرسائل المختارة ، إزالة رسائل البريد وجهات الاتصال المكررة ...
  • أكثر من 100 ميزة متقدمة سوف حل معظم مشاكلك في Outlook 2021 - 2010 أو Office 365. الميزات الكاملة نسخة تجريبية مجانية مدتها 60 يومًا.

السهم الأزرق الحق فقاعة تصدير رسائل بريد إلكتروني متعددة من مجلدات / مجلدات فرعية متعددة إلى Excel باستخدام VBA

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

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

2. انقر إدراج > وحدة، ثم قم بلصق كود فبا أدناه في نافذة الوحدة النمطية الجديدة.

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

Const MACRO_NAME = "Export Outlook Folders to Excel"

Sub ExportMain()
ExportToExcel "destination_folder_path\A.xlsx", "your_email_accouny\folder\subfolder_1"
ExportToExcel "destination_folder_path\B.xlsx", "your_email_accouny\folder\subfolder_2"
MsgBox "Process complete.", vbInformation + vbOKOnly, MACRO_NAME
End Sub
Sub ExportToExcel(strFilename As String, strFolderPath As String)
Dim      olkMsg As Object
Dim olkFld As Object
Dim excApp As Object
Dim excWkb As Object
Dim excWks As Object
Dim intRow As Integer
Dim intVersion As Integer

If strFilename <> "" Then
If strFolderPath <> "" Then
Set olkFld = OpenOutlookFolder(strFolderPath)
If TypeName(olkFld) <> "Nothing" Then
intVersion = GetOutlookVersion()
Set excApp = CreateObject("Excel.Application")
Set excWkb = excApp.Workbooks.Add()
Set excWks = excWkb.ActiveSheet
'Write Excel Column Headers
With excWks
.Cells(1, 1) = "Subject"
.Cells(1, 2) = "Received"
.Cells(1, 3) = "Sender"
End With
intRow = 2
For Each olkMsg In olkFld.Items
'Only export messages, not receipts or appointment requests, etc.
If olkMsg.Class = olMail Then
'Add a row for each field in the message you want to export
excWks.Cells(intRow, 1) = olkMsg.Subject
excWks.Cells(intRow, 2) = olkMsg.ReceivedTime
excWks.Cells(intRow, 3) = GetSMTPAddress(olkMsg, intVersion)
intRow = intRow + 1
End If
Next
Set olkMsg = Nothing
excWkb.SaveAs strFilename
excWkb.Close
Else
MsgBox "The folder '" & strFolderPath & "' does not exist in Outlook.", vbCritical + vbOKOnly, MACRO_NAME
End If
Else
MsgBox "The folder path was empty.", vbCritical + vbOKOnly, MACRO_NAME
End If
Else
MsgBox "The filename was empty.", vbCritical + vbOKOnly, MACRO_NAME
End If

Set olkMsg = Nothing
Set olkFld = Nothing
Set excWks = Nothing
Set excWkb = Nothing
Set excApp = Nothing
End Sub

Public Function OpenOutlookFolder(strFolderPath As String) As Outlook.MAPIFolder
Dim arrFolders As Variant
Dim varFolder As Variant
Dim bolBeyondRoot As Boolean

On Error Resume Next
If strFolderPath = "" Then
Set OpenOutlookFolder = Nothing
Else
Do While Left(strFolderPath, 1) = "\"
strFolderPath = Right(strFolderPath, Len(strFolderPath) - 1)
Loop
arrFolders = Split(strFolderPath, "\")
For Each varFolder In arrFolders
Select Case bolBeyondRoot
Case False
Set OpenOutlookFolder = Outlook.Session.Folders(varFolder)
bolBeyondRoot = True
Case True
Set OpenOutlookFolder = OpenOutlookFolder.Folders(varFolder)
End Select
If Err.Number <> 0 Then
Set OpenOutlookFolder = Nothing
Exit For
End If
Next
End If
On Error GoTo 0
End Function

Function GetSMTPAddress(Item As Outlook.MailItem, intOutlookVersion As Integer) As String
Dim olkSnd As Outlook.AddressEntry
Dim olkEnt As Object

On Error Resume Next
Select Case intOutlookVersion
Case Is < 14
If Item.SenderEmailType = "EX" Then
GetSMTPAddress = SMTPEX(Item)
Else
GetSMTPAddress = Item.SenderEmailAddress
End If
Case Else
Set olkSnd = Item.Sender
If olkSnd.AddressEntryUserType = olExchangeUserAddressEntry Then
Set olkEnt = olkSnd.GetExchangeUser
GetSMTPAddress = olkEnt.PrimarySmtpAddress
Else
GetSMTPAddress = Item.SenderEmailAddress
End If
End Select
On Error GoTo 0
Set olkPrp = Nothing
Set olkSnd = Nothing
Set olkEnt = Nothing
End Function

Function GetOutlookVersion() As Integer
Dim arrVer As Variant
arrVer = Split(Outlook.Version, ".")
GetOutlookVersion = arrVer(0)
End Function

Function SMTPEX(olkMsg As Outlook.MailItem) As String
Dim olkPA As Outlook.propertyAccessor
On Error Resume Next
Set olkPA = olkMsg.propertyAccessor
SMTPEX = olkPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x5D01001E")
On Error GoTo 0
Set olkPA = Nothing
End Function

3. يرجى ضبط رمز فبا أعلاه حسب حاجتك.

(1) استبدل Destination_folder_path في الكود أعلاه مع مسار المجلد لمجلد الوجهة ، ستحفظ المصنفات التي تم تصديرها ، مثل C: \ Users \ DT168 \ Documents \ TEST.
(2) استبدل your_email_accouny \ folder \ subfolder_1 و your_email_accouny \ folder \ subfolder_2 في الكود أعلاه بمسارات مجلدات المجلدات الفرعية في Outlook ، مثل كيلي @extendoffice.com \ Inbox \ A و كيلي @extendoffice.com \ Inbox \ ب

4. اضغط على F5 مفتاح أو انقر فوق يجري زر لتشغيل هذا VBA. ثم انقر فوق ملف OK زر في مربع الحوار تصدير مجلدات Outlook إلى Excel المنبثقة. انظر لقطة الشاشة:

والآن يتم تصدير رسائل البريد الإلكتروني من جميع المجلدات الفرعية أو المجلدات المحددة في رمز VBA أعلاه وحفظها في مصنفات Excel.


السهم الأزرق الحق فقاعةمقالات ذات صلة


Kutools for Outlook - يجلب 100 ميزة متقدمة إلى Outlook ، ويجعل العمل أسهل كثيرًا!

  • CC السيارات / BCC حسب القواعد عند إرسال البريد الإلكتروني ؛ إعادة توجيه تلقائي رسائل بريد إلكتروني متعددة حسب الطلب ؛ رد آلي بدون خادم صرف ، والمزيد من الميزات التلقائية ...
  • تحذير BCC - إظهار الرسالة عند محاولة الرد على الكل إذا كان عنوان بريدك في قائمة BCC; تذكير عند فقدان المرفقات، والمزيد من ميزات التذكير ...
  • رد (الكل) بكل المرفقات في محادثة البريد; الرد على العديد من رسائل البريد الإلكتروني في ثوان؛ إضافة تحية تلقائية عند الرد إضافة التاريخ إلى الموضوع ...
  • أدوات المرفقات: إدارة جميع المرفقات في جميع الرسائل ، فصل تلقائي, ضغط الكل، إعادة تسمية الكل ، حفظ الكل ... تقرير سريع ، عد الرسائل المختارة
  • رسائل البريد الإلكتروني غير الهامة القوية حسب العرف قم بإزالة الرسائل المكررة وجهات الاتصال تمكنك من أداء أذكى وأسرع وأفضل في Outlook.
لقطة kutools outlook kutools tab 1180x121
لقطة kutools outlook kutools plus tab 1180x121
 
فرز التعليقات حسب
التعليقات (10)
لا يوجد تقييم. كن أول من يقيم!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كيف يمكنني إعادة هذا تلقائيًا إلى مجلدات فرعية؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا عزيزي ، كل شيء يعمل بشكل جيد ، شكرًا جزيلاً ولكن لم يتم تصدير الجسم ، كيف يمكنني تصدير جسم البريد الإلكتروني أيضًا ، ملف Excel يحتوي فقط على (الموضوع ، المستلم ، والمرسل) ، إذا كان بإمكانك تحديثه لي فسيحل مشكلة كبيرة في عملي شكرا جزيلا مرة أخرى
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا منتصر
يعمل البرنامج النصي VBA استنادًا إلى ميزة تصدير Outlook التي لا تدعم تصدير محتوى الرسالة عند تصدير رسائل البريد الإلكتروني بالجملة من مجلد بريد. لذلك ، لا يمكن لهذا البرنامج النصي VBA تصدير محتوى الرسالة أيضًا.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
يعمل هذا بشكل رائع ، ولكن هل هناك طريقة لإضافة المعلومات ليس فقط للحقول الأربعة أعلاه ولكن كل ما يقدمه Outlook للتصدير إلى PST؟ نص الموضوع من: (الاسم) من: (العنوان) من: (النوع) إلى: (الاسم) إلى: (العنوان) إلى: (النوع) نسخة إلى: (الاسم) نسخة إلى: (العنوان) نسخة: (النوع) نسخة مخفية الوجهة: ( الاسم) BCC: (العنوان) BCC: (النوع) فئات معلومات الفواتير أهمية حساسية الأميال

حاولت إضافة "الأهمية" وقد نجحت ، لكنني سأكون ممتنًا لو قام شخص ما بتوفير الكود للحقول الأخرى. شكرا!!
مع excWks
.Cells (1، 1) = "الموضوع"
.Cells (1، 2) = "مستلم"
.Cells (1، 3) = "المرسل"
.Cells (1، 4) = "Body"
.Cells (1، 5) = "الأهمية"
انتهت ب
intRow = 2
لكل olkMsg في olkFld.Items
تصدير الرسائل فقط ، وليس الإيصالات أو طلبات المواعيد ، إلخ.
إذا olkMsg.Class = olMail ثم
أضف صفًا لكل حقل في الرسالة التي تريد تصديرها
excWks.Cells (intRow، 1) = olkMsg
excWks.Cells (intRow، 2) = olkMsg.ReceivedTime
excWks.Cells (intRow، 3) = GetSMTPAddress (olkMsg، intVersion)
excWks.Cells (intRow، 4) = olkMsg.Body
excWks.Cells (intRow، 5) = olkMsg. الأهمية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، يرجى التحقق من الرمز أدناه لاحتياجاتك:
Const MACRO_NAME = "تصدير مجلدات Outlook إلى Excel"

تصدير فرعي رئيسي ()

ExportToExcel "destination_folder_path \ A.xlsx"، "your_email_accouny \ folder \ subfolder_1"

ExportToExcel "destination_folder_path \ B.xlsx"، "your_email_accouny \ folder \ subfolder_2"

MsgBox "اكتملت العملية." ، vbInformation + vbOKOnly ، MACRO_NAME

نهاية الفرعية

فرعي ExportToExcel (اسم ملف باسم سلسلة ، strFolderPath كسلسلة)

خافت olkMsg ككائن

خافت olkFld ككائن

خافت excApp ككائن

خافت excWkb ككائن

خافت excWks ككائن

قاتمة intRow كعدد صحيح

intVersion خافت كعدد صحيح

إذا كان strFilename <> "" إذًا

إذا كان strFolderPath <> "" إذًا

تعيين olkFld = OpenOutlookFolder (strFolderPath)

إذا كان TypeName (olkFld) <> "Nothing" ثم

intVersion = GetOutlookVersion ()

تعيين excApp = CreateObject ("Excel.Application")

قم بتعيين excWkb = excApp.Workbooks.Add ()

تعيين excWks = excWkb.ActiveSheet

اكتب رؤوس أعمدة Excel

مع excWks

.Cells (1، 1) = "الموضوع"

.Cells (1، 2) = "Body"

.Cells (1، 3) = "مستلم"

.Cells (1، 4) = "من: (الاسم)"

.Cells (1، 5) = "من: (العنوان)"

.Cells (1، 6) = "من: (النوع)"

.Cells (1، 7) = "إلى: (الاسم)"

.Cells (1، 8) = "إلى: (العنوان)"

.Cells (1، 9) = "إلى: (النوع)"

.Cells (1، 10) = "CC: (Name)"

.Cells (1، 11) = "نسخة إلى: (العنوان)"

.Cells (1، 12) = "CC: (Type)"

.Cells (1، 13) = "BCC: (Name)"

.Cells (1، 14) = "BCC: (Address)"

.Cells (1 ، 15) = "BCC: (النوع)"

.Cells (1، 16) = "معلومات الفواتير"

.Cells (1، 17) = "الفئات"

.Cells (1، 18) = "الأهمية"

.Cells (1 ، 19) = "المسافة المقطوعة"

.Cells (1، 20) = "حساسية"

انتهت ب

intRow = 2

لكل olkMsg في olkFld.Items

تصدير الرسائل فقط ، وليس الإيصالات أو طلبات المواعيد ، إلخ.

إذا olkMsg.Class = olMail ثم

أضف صفًا لكل حقل في الرسالة التي تريد تصديرها

excWks.Cells (intRow، 1) = olkMsg

excWks.Cells (intRow، 2) = olkMsg.Body

excWks.Cells (intRow، 3) = olkMsg.ReceivedTime

excWks.Cells (intRow، 4) = olkMsg.SenderName

excWks.Cells (intRow، 5) = GetAddress (olkMsg.Sender، intVersion)

excWks.Cells (intRow، 6) = olkMsg.Sender.Type

excWks.Cells (intRow، 7) = GetRecipientsName (olkMsg، 1، 1، intVersion)

excWks.Cells (intRow، 8) = GetRecipientsName (olkMsg، 1، 2، intVersion)

excWks.Cells (intRow، 9) = GetRecipientsName (olkMsg، 1، 3، intVersion)

excWks.Cells (intRow، 10) = GetRecipientsName (olkMsg، 2، 1، intVersion)

excWks.Cells (intRow، 11) = GetRecipientsName (olkMsg، 2، 2، intVersion)

excWks.Cells (intRow، 12) = GetRecipientsName (olkMsg، 2، 3، intVersion)

excWks.Cells (intRow، 13) = GetRecipientsName (olkMsg، 3، 1، intVersion)

excWks.Cells (intRow، 14) = GetRecipientsName (olkMsg، 3، 2، intVersion)

excWks.Cells (intRow، 15) = GetRecipientsName (olkMsg، 3، 3، intVersion)

excWks.Cells (intRow، 16) = olkMsg.BillingInformation

excWks.Cells (intRow، 17) = olkMsg

excWks.Cells (intRow، 18) = olkMsg. الأهمية

excWks.Cells (intRow، 19) = olkMsg.Mileage

ExcWks.Cells (intRow ، 20) = olkMsg.Sensitivity

intRow = intRow + 1

إنهاء حالة

التالى

تعيين olkMsg = لا شيء

excWkb.SaveAs strFilename

excWkb إغلاق

آخر

MsgBox "المجلد" & strFolderPath & "" غير موجود في Outlook. "، vbCritical + vbOKOnly ، MACRO_NAME

إنهاء حالة

آخر

MsgBox "مسار المجلد فارغ." ، vbCritical + vbOKOnly ، MACRO_NAME

إنهاء حالة

آخر

MsgBox "اسم الملف فارغ." ، vbCritical + vbOKOnly ، MACRO_NAME

إنهاء حالة



تعيين olkMsg = لا شيء

تعيين olkFld = لا شيء

تعيين excWks = لا شيء

تعيين excWkb = لا شيء

تعيين excApp = لا شيء

نهاية الفرعية



الوظيفة العامة OpenOutlookFolder (strFolderPath As String) كـ Outlook.MAPIFolder

المجلدات الخافتة كمتغير

خافت varFolder كمتغير

قاتمة bolBeyondRoot كما منطقية

على خطأ استئناف التالي

إذا كان strFolderPath = "" إذن

قم بتعيين OpenOutlookFolder = لا شيء

آخر

القيام أثناء اليسار (strFolderPath، 1) = "\"

strFolderPath = يمين (strFolderPath، Len (strFolderPath) - 1)

أنشوطة

arrFolders = انقسام (strFolderPath، "\")

لكل varFolder In arrFolders

حدد حالة bolBeyondRoot

حالة خطأ

قم بتعيين OpenOutlookFolder = Outlook.Session.Folders (varFolder)

bolBeyondRoot = صحيح

الحالة صحيحة

قم بتعيين OpenOutlookFolder = OpenOutlookFolder.Folders (varFolder)

إنهاء اختر

إذا Err.Number <> 0 ثم

قم بتعيين OpenOutlookFolder = لا شيء

خروج عن

إنهاء حالة

التالى

إنهاء حالة

على خطأ GoTo 0

نهاية وظيفة



دالة GetOutlookVersion () كعدد صحيح

باهتة كما هو متغير

arrVer = انقسام (Outlook.Version، ".")

GetOutlookVersion = arrVer (0)

نهاية وظيفة



وظيفة SMTPEX (إدخال باسم إدخال العنوان) كسلسلة

خافت olkPA كـ Outlook.PropertyAccessor

على خطأ استئناف التالي

قم بتعيين olkPA = Entry.PropertyAccessor

SMTPEX = olkPA.GetProperty ("http://schemas.microsoft.com/mapi/proptag/0x5D01001E")

على خطأ GoTo 0

تعيين olkPA = لا شيء

نهاية وظيفة



الوظيفة GetAddress (الإدخال باسم AddressEntry ، intOutlookVersion كعدد صحيح) كسلسلة

خافت olkEnt ككائن

على خطأ استئناف التالي

حدد الحالة في OutlookVersion

الحالة <14

إذا كان Entry.Type = "EX" ثم

GetAddress = SMTPEX (إدخال)

آخر

GetAddress = Entry.Address

إنهاء حالة

حالة أخرى

إذا كان Entry.AddressEntryUserType = olExchangeUserAddressEntry ثم

اضبط olkEnt = Entry.GetExchangeUser

GetAddress = olkEnt.PrimarySmtpAddress

آخر

GetAddress = Entry.Address

إنهاء حالة

إنهاء اختر

على خطأ GoTo 0

تعيين olkEnt = لا شيء

نهاية وظيفة



الوظيفة GetRecipientsName (العنصر باسم MailItem ، rcpType باعتباره عددًا صحيحًا ، Ret As Integer ، intOutlookVersion As Integer) كسلسلة

خافت xRcp كمتلقي

خافت x الأسماء كسلسلة

xNames = ""

لكل xRcp في العنصر

إذا كان xRcp.Type = rcpType ثم

إذا Ret = 1 ثم

إذا كانت xNames = "" إذن

xNames = xRcp.Name

آخر

xNames = xNames & "؛" & xRcp.Name

إنهاء حالة

ElseIf Ret = 2 ثم

إذا كانت xNames = "" إذن

xNames = GetAddress (xRcp.AddressEntry، intOutlookVersion)

آخر

xNames = xNames & "؛" & GetAddress (xRcp.AddressEntry، intOutlookVersion)

إنهاء حالة

ElseIf Ret = 3 ثم

إذا كانت xNames = "" إذن

xNames = xRcp.AddressEntry.Type

آخر

xNames = xNames & "؛" & xRcp.AddressEntry.Type

إنهاء حالة

إنهاء حالة

ElseIf xRcp.Type = rcpType ثم

إذا Ret = 1 ثم

إذا كانت xNames = "" إذن

xNames = xRcp.Name

آخر

xNames = xNames & "؛" & xRcp.Name

إنهاء حالة

ElseIf Ret = 2 ثم

إذا كانت xNames = "" إذن

xNames = GetAddress (xRcp.AddressEntry، intOutlookVersion)

آخر

xNames = xNames & "؛" & GetAddress (xRcp.AddressEntry، intOutlookVersion)

إنهاء حالة

ElseIf Ret = 3 ثم

إذا كانت xNames = "" إذن

xNames = xRcp.AddressEntry.Type

آخر

xNames = xNames & "؛" & xRcp.AddressEntry.Type

إنهاء حالة

إنهاء حالة

ElseIf xRcp.Type = rcpType ثم

إذا Ret = 1 ثم

إذا كانت xNames = "" إذن

xNames = xRcp.Name

آخر

xNames = xNames & "؛" & xRcp.Name

إنهاء حالة

ElseIf Ret = 2 ثم

إذا كانت xNames = "" إذن

xNames = GetAddress (xRcp.AddressEntry، intOutlookVersion)

آخر

xNames = xNames & "؛" & GetAddress (xRcp.AddressEntry، intOutlookVersion)

إنهاء حالة

ElseIf Ret = 3 ثم

إذا كانت xNames = "" إذن

xNames = xRcp.AddressEntry.Type

آخر

xNames = xNames & "؛" & xRcp.AddressEntry.Type

إنهاء حالة

إنهاء حالة

إنهاء حالة

التالى

GetRecipientsName = xNames

نهاية وظيفة




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

اكتب رؤوس أعمدة Excel
مع excWks
.Cells (1، 1) = "الموضوع"
.Cells (1، 2) = "مستلم"
.Cells (1، 3) = "المرسل"
.Cells (1، 4) = "Body"
انتهت ب
intRow = 2
لكل olkMsg في olkFld.Items
تصدير الرسائل فقط ، وليس الإيصالات أو طلبات المواعيد ، إلخ.
إذا olkMsg.Class = olMail ثم
أضف صفًا لكل حقل في الرسالة التي تريد تصديرها
excWks.Cells (intRow، 1) = olkMsg
excWks.Cells (intRow، 2) = olkMsg.ReceivedTime
excWks.Cells (intRow، 3) = GetSMTPAddress (olkMsg، intVersion)
excWks.Cells (intRow، 4) = olkMsg.Body
intRow = intRow + 1
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، آمل أن يتمكن أحدهم من مساعدتي هنا ، ليس لدي أي معرفة تقريبًا بـ VB لكنني تمكنت من جعل هذا السيناريو يعمل معي حتى الآن.

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

لقد بحثت منذ أيام وجربت العديد من المواقع المختلفة ولكن لا يمكنني الحصول على أي رمز آخر غير هذا الموقع.


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


تصدير فرعي رئيسي ()

ExportToExcel "destination_folder_path \ A.xlsx"، "your_email_accouny \ folder \ subfolder_1"

ExportToExcel "destination_folder_path \ B.xlsx"، "your_email_accouny \ folder \ subfolder_2"

MsgBox "اكتملت العملية." ، vbInformation + vbOKOnly ، MACRO_NAME

نهاية الفرعية


شكرا مقدما
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،
لقد قمت بتشغيل هذا الماكرو الذي يعمل بشكل جيد.
أفهم ذلك في التعبيرات
excWks.Cells (intRow، 1) = olkMsg
excWks.Cells (intRow، 2) = olkMsg.ReceivedTime
excWks.Cells (intRow، 3) = GetSMTPAddress (olkMsg، intVersion)

يقوم كل من olkMsg. * و GetSMTPAddress (olkMsg، intVersion) باستخراج الأشياء من Outlook.

ما الحجة التي يجب استخدامها للحصول على العنوان الذي تم إرسال البريد إليه؟

عند استخدام معالج تصدير Outlook ، من الممكن تصدير هذا العنوان ، لذلك أفترض أنه سيكون من الممكن القيام بذلك من خلال هذا الماكرو (مع بعض التعديلات).
هل يمكن لاحد ان يساعد؟

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

المستخدم = النوع المعرف غير محدد

على السطر 62 "الوظيفة العامة OpenOutlookFolder (strFolderPath كسلسلة) كـ Outlook.MAPIFolder"

لقد قمت بالفعل بتحديد المسار على النحو التالي:

ExportToExcel "C: \ Users \ kudus \ Documents \ MailExportTest \ f1 \ A.xlsx"، "myname@mydomain.com \ Inbox \ Black Hat Webcast"
ExportToExcel "C: \ Users \ Documekudus \ Documents \ MailExportTest \ f2 \ B.xlsx"، "myname@mydomain.com \ Inbox \ CPD \ Kaplan Training"

أنا أستخدم Outlook 2016 في حالة الحاجة
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أصلحتها. من النافذة Visual Basic ، انتقل إلى Tools Reference - والمربع "Microsoft Outlook 16.0 Object Library"

لا توجد تعليقات منشورة هنا حتى الآن
اترك تعليقاتك
النشر كضيف
×
قيم المنشور:
0   الشخصيات
المواقع المقترحة

تواصل معنا

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