انتقل إلى المحتوى الرئيسي

كيفية البحث عن المجلد (مسار المجلد الكامل) حسب اسم المجلد في Outlook؟

المؤلف: كيلي آخر تعديل: 2020-01-19

على سبيل المثال ، في جزء التنقل ، تقوم بنقل مجلد وإفلاته في مجلد غير معروف عن طريق الخطأ في Outlook ، وتريد استعادة هذا المجلد ولكن لا يمكنك اكتشافه على الفور. لسوء الحظ ، لا يدعم Outlook ملفات ميزة مماثلة لتلك الموجودة في Microsoft Word أو Excel. لا تقلق! يمكنك تطبيق ماكرو VBA لحل هذه المشكلة في Outlook.

ابحث بسرعة وافتح المجلدات حسب اسم المجلد باستخدام أداة رائعة

بشكل عام ، يمكننا البحث عن المجلدات حسب اسم المجلد برمز VBA. يمكن لمعظم رموز VBA البحث عن المجلدات في صندوق البريد الحالي ، وفتح المجلد الأول الذي تم العثور عليه فقط. الآن مع ميزة Go To في Kutools for Outlook ، يمكنك بسهولة العثور على المجلدات حسب اسم المجلد بسهولة ، وفتح أي مجلد من المجلدات التي تم العثور عليها حسب حاجتك.



ابحث عن المجلد (مسار المجلد الكامل) حسب اسم المجلد باستخدام VBA

يرجى اتباع الخطوات أدناه للبحث عن المجلدات حسب أسماء المجلدات باستخدام VBA في Outlook.

1. صحافة قديم + F11 مفاتيح معًا لفتح نافذة Microsoft Visual Basic for Applications.

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

VBA: ابحث عن المجلدات وافتحها حسب اسم المجلد في Outlook

Private m_Folder As MAPIFolder
Private m_Find As String
Private m_Wildcard As Boolean

Private Const SpeedUp As Boolean = True
Private Const StopAtFirstMatch As Boolean = True

Public Sub FindFolder()
Dim sName As String
Dim oFolders As Folders

  Set m_Folder = Nothing
m_Find = ""
m_Wildcard = False

  sName = InputBox("Find:", "Search folder")
If Len(Trim(sName)) = 0 Then Exit Sub
m_Find = sName

  m_Find = LCase(m_Find)
m_Find = Replace(m_Find, "%", "*")
m_Wildcard = (InStr(m_Find, "*"))

  Set oFolders = Application.Session.Folders
LoopFolders oFolders

  If Not m_Folder Is Nothing Then
If MsgBox("Activate folder: " & vbCrLf & m_Folder.FolderPath, vbQuestion Or vbYesNo) = vbYes Then
Set Application.ActiveExplorer.CurrentFolder = m_Folder
End If
Else
MsgBox "Not found", vbInformation
End If
End Sub

Private Sub LoopFolders(Folders As Outlook.Folders)
Dim oFolder As MAPIFolder
Dim bFound As Boolean

If SpeedUp = False Then DoEvents

  For Each oFolder In Folders
If m_Wildcard Then
bFound = (LCase(oFolder.Name) Like m_Find)
Else
bFound = (LCase(oFolder.Name) = m_Find)
End If

    If bFound Then
If StopAtFirstMatch = False Then
If MsgBox("Found: " & vbCrLf & oFolder.FolderPath & vbCrLf & vbCrLf & "Continue?", vbQuestion Or vbYesNo) = vbYes Then
bFound = False
End If
End If
End If
If bFound Then
Set m_Folder = oFolder
Exit For
Else
LoopFolders oFolder.Folders
If Not m_Folder Is Nothing Then Exit For
End If
Next
End Sub

3. صحافة F5 مفتاح أو انقر فوق يجري زر لتشغيل هذا VBA.

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

ملاحظات: يدعم VBA حرف البدل النجمة. على سبيل المثال ، يمكنك كتابة الاختبارات * لمعرفة جميع المجلدات التي يبدأ اسمها بـ قسم التدريب والامتحانات.

5. يظهر الآن مربع حوار ويظهر مسار مجلد المجلد الذي تم العثور عليه. إذا كنت بحاجة إلى فتح المجلد الموجود ، فالرجاء النقر فوق نعم .

والآن يتم فتح المجلد الذي تم العثور عليه في جزء التنقل كما هو موضح أدناه:

ملاحظات: إذا كان هناك أكثر من مجلد واحد مسمى بالاسم المحدد ، فيمكن لـ VBA هذا العثور على مجلد واحد فقط وفتحه.


ابحث عن مجلد باسم المجلد بواسطة أداة مذهلة

إذا كان لديك Kutools for Outlook مثبتًا ، فيمكنك تطبيق ميزة Go To الخاصة به لاكتشاف جميع المجلدات بسرعة بواسطة اسم مجلد معين ، وفتح أي مجلد وجد بسهولة أيضًا.

كوتولس لتوقعات: قم بتعزيز Outlook باستخدام أكثر من 100 أداة ضرورية. اختبر قيادتها مجانًا لمدة 60 يومًا، دون أي شروط!   اقرأ أكثر...   تحميل الآن!

1. انقر كوتولس بلس > إذهب إلى لتمكين هذه الميزة.

2. في مربع الحوار Go To ، يرجى كتابة اسم المجلد المحدد في ملف بحث ، حدد مجلدًا في نتائج البحث ، وانقر فوق Ok .

الآن تم العثور على المجلد المحدد مع اسم مجلد معين وفتحه على الفور.


مقالات ذات صلة:


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

كوتولس لتوقعات - أكثر من 100 ميزة قوية لتعزيز توقعاتك

🤖 مساعد بريد الذكاء الاصطناعي: رسائل بريد إلكتروني احترافية فورية مع سحر الذكاء الاصطناعي - بنقرة واحدة للردود العبقرية، والنغمة المثالية، وإتقان متعدد اللغات. تحويل البريد الإلكتروني دون عناء! ...

📧 أتمتة البريد الإلكتروني: خارج المكتب (متوفر لـ POP وIMAP)  /  جدولة إرسال رسائل البريد الإلكتروني  /  نسخة تلقائية/نسخة مخفية الوجهة حسب القواعد عند إرسال البريد الإلكتروني  /  إعادة التوجيه التلقائي (القواعد المتقدمة)   /  إضافة تحية تلقائية   /  تقسيم رسائل البريد الإلكتروني متعددة المستلمين تلقائيًا إلى رسائل فردية 

📨 إدارة البريد الإلكتروني: استدعاء رسائل البريد الإلكتروني بسهولة  /  حظر رسائل البريد الإلكتروني الاحتيالية حسب الموضوعات والآخرين  /  حذف رسائل البريد الإلكتروني المكررة  /  المزيد من خيارات البحث  /  توحيد المجلدات 

📁 المرفقات بروحفظ دفعة  /  فصل دفعة  /  ضغط دفعة  /  حفظ تلقائي   /  فصل تلقائي  /  ضغط تلقائي 

؟؟؟؟ واجهة ماجيك: 😊 المزيد من الرموز التعبيرية الجميلة والرائعة   /  عزز إنتاجية Outlook الخاص بك باستخدام طرق العرض المبوبة  /  تصغير Outlook بدلاً من الإغلاق 

؟؟؟؟ بنقرة واحدة عجائب: الرد على الكل بالمرفقات الواردة  /   رسائل البريد الإلكتروني لمكافحة التصيد  /  🕘إظهار المنطقة الزمنية للمرسل 

👩🏼‍🤝‍👩🏻 جهات الاتصال والتقويم: دفعة إضافة جهات الاتصال من رسائل البريد الإلكتروني المحددة  /  تقسيم مجموعة اتصال إلى مجموعات فردية  /  إزالة تذكير عيد ميلاد 

على مدى ميزات 100 في انتظار الاستكشاف الخاص بك! انقر هنا لاكتشاف المزيد.

 

 

Comments (10)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Thank you for this great macro. I have used it extensively over the past 2 years. My employer switched from Office 16 to Office 365 and since then, this macro is VERY slow. Is there any way to optimize it for Office 365?
Thanks!
This comment was minimized by the moderator on the site
This macro has really helped me is incredible, thank you!!!
Is it possible to to go to the next occurrence, so instead of just Yes/No have something as Yes/Next/No ?
Thank you
This comment was minimized by the moderator on the site
Private m_Folder As MAPIFolder
Private m_Find As String
Private m_Wildcard As Boolean

Private Const SpeedUp As Boolean = True
'Private Const StopAtFirstMatch As Boolean = True
Private StopAtFirstMatch As Boolean

Public Sub FindFolder()
Dim sName As String
Dim oFolders As Folders

Set m_Folder = Nothing
m_Find = ""
m_Wildcard = False

sName = InputBox("Find:", "Search folder")
If Len(Trim(sName)) = 0 Then Exit Sub

'm_Find = sName
' Added "*"... for any given string in the folder name
m_Find = "*" & sName & "*"

m_Find = LCase(m_Find)
m_Find = Replace(m_Find, "%", "*")
m_Wildcard = (InStr(m_Find, "*"))

' Set oFolders = Application.Session.Folders
Set oFolders = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders

LoopFolders oFolders

If Not m_Folder Is Nothing Then
' Removed - If MsgBox("Activate folder: " & vbCrLf & m_Folder.FolderPath, vbQuestion Or vbYesNo) = vbYes Then
Set Application.ActiveExplorer.CurrentFolder = m_Folder
Else
MsgBox "Search End...", vbInformation
End If
End Sub

Private Sub LoopFolders(Folders As Outlook.Folders)
Dim oFolder As MAPIFolder
Dim bFound As Boolean

If SpeedUp = False Then DoEvents

For Each oFolder In Folders
If m_Wildcard Then
bFound = (LCase(oFolder.Name) Like m_Find)
Else
bFound = (LCase(oFolder.Name) = m_Find)
End If


If bFound Then
If StopAtFirstMatch = False Then
Set Application.ActiveExplorer.CurrentFolder = oFolder

If MsgBox("Found: " & vbCrLf & oFolder.FolderPath & vbCrLf & vbCrLf & "Search for next?", vbQuestion Or vbYesNo) = vbYes Then
bFound = False
End If
Else
MsgBox ("Not found")
End If
End If
If bFound Then
Set m_Folder = oFolder
Exit For
Else
LoopFolders oFolder.Folders
If Not m_Folder Is Nothing Then Exit For
End If
Next
End Sub
This comment was minimized by the moderator on the site
Hi, if i try to copy and past the macro yes/next/no, I only received the message "Search End".
Could you take a look? I would really appreciate it. Thanks
This comment was minimized by the moderator on the site
Hi, if i try to copy and past the macro yes/next/no, I only received the message "Search End".Could you take a look? I would really appreciate it. Thanks
This comment was minimized by the moderator on the site
Wow this is exactly. I really appreciate it and you did it so fast.Thanks
This comment was minimized by the moderator on the site
Hello,

Thank you for this macro. It works great!


Is there a way to make the macro always search as wildcards? I would be easier to just type a keyword without adding the asterisks every time.
This comment was minimized by the moderator on the site
Replace Line 18 with

m_Find = "*" & sName & "*"
This comment was minimized by the moderator on the site
Replace Line 18 with
m_Find = "*" & sName & "*"
This comment was minimized by the moderator on the site
Hello.

Wow - this is an amazing function, which will make my daily usage of Outlook tons faster.
Thank you so much for publishing!!

A tip for those interested:
If you want to search only INBOX-folders, without public folders etc.
This made it a lot faster for me because the public folder are remote, so the search is quite slow.
And also I'm not interested in those results.


Replace line 24 with:

Set oFolders = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations