Bỏ qua nội dung chính

Làm cách nào để tìm thư mục (đường dẫn thư mục đầy đủ) theo tên thư mục trong Outlook?

Ví dụ, trên ngăn Dẫn hướng, bạn di chuyển một thư mục và thả nhầm vào một thư mục không xác định trong Outlook, bạn muốn khôi phục thư mục này nhưng không thể tìm ra nó ngay lập tức. Rất tiếc, Outlook không hỗ trợ Tìm kiếm tính năng tương tự như trong Microsoft Word hoặc Excel. Đừng lo! Bạn có thể áp dụng macro VBA để giải quyết vấn đề này trong Outlook.

Nhanh chóng tìm kiếm và mở các thư mục theo tên thư mục với một công cụ tuyệt vời

Nói chung, chúng ta có thể tìm kiếm thư mục theo tên thư mục với mã VBA. Hầu hết mã VBA có thể tìm kiếm các thư mục trong hộp thư hiện tại và chỉ mở thư mục được tìm thấy đầu tiên. Giờ đây với tính năng Đi tới của Kutools cho Outlook, bạn có thể dễ dàng tìm thấy các thư mục theo tên thư mục một cách dễ dàng và mở bất kỳ thư mục nào được tìm thấy khi bạn cần.



Tìm thư mục (đường dẫn thư mục đầy đủ) theo tên thư mục với VBA

Vui lòng làm theo các bước dưới đây để tìm kiếm thư mục theo tên thư mục với VBA trong Outlook.

1. nhấn Khác + F11 các phím với nhau để mở cửa sổ Microsoft Visual Basic for Applications.

2. Nhấp chuột Chèn > Mô-đun, rồi dán mã VBA bên dưới vào cửa sổ Mô-đun mới.

VBA: Tìm kiếm và mở các thư mục theo tên thư mục trong 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. nhấn F5 phím hoặc nhấp vào chạy để chạy VBA này.

4. Trong hộp thoại Thư mục tìm kiếm hiện ra, vui lòng nhập tên thư mục được chỉ định mà bạn sẽ tìm kiếm và nhấp vào OK cái nút. Xem ảnh chụp màn hình:

Chú thích: VBA này hỗ trợ ký tự đại diện dấu hoa thị. Ví dụ, bạn có thể gõ tes * để tìm ra tất cả các thư mục có tên bắt đầu bằng tes.

5. Bây giờ một hộp thoại xuất hiện và hiển thị đường dẫn thư mục của thư mục tìm thấy. Nếu bạn cần mở thư mục tìm thấy, vui lòng nhấp vào .

Và bây giờ thư mục tìm thấy đang mở trên ngăn Điều hướng như ảnh chụp màn hình bên dưới:

Chú thích: Nếu có nhiều hơn một thư mục có tên được chỉ định, VBA này chỉ có thể tìm và mở một thư mục.


Tìm kiếm thư mục theo tên thư mục bằng một công cụ tuyệt vời

Nếu bạn đã cài đặt Kutools cho Outlook, bạn có thể áp dụng tính năng Go To của nó để nhanh chóng tìm ra tất cả các thư mục theo tên thư mục nhất định và dễ dàng mở bất kỳ thư mục nào được tìm thấy.

Kutools cho Outlook: Tăng cường Outlook với hơn 100 công cụ phải có. Lái thử MIỄN PHÍ trong 60 ngày, không cần ràng buộc!   Đọc thêm ...   Download Now!

1. Nhấp chuột Kutools Plus > Go To để kích hoạt tính năng này.

2. Trong hộp thoại Đi tới, vui lòng nhập tên thư mục được chỉ định trong Tìm kiếm , chọn một thư mục trong kết quả tìm kiếm và nhấp vào Ok .

Bây giờ thư mục được chỉ định với tên thư mục nhất định được tìm thấy và mở ngay lập tức.


Các bài liên quan:


Công cụ năng suất văn phòng tốt nhất

Kutools cho Outlook - Hơn 100 tính năng mạnh mẽ để tăng cường Outlook của bạn

🤖 Trợ lý thư AI: Email chuyên nghiệp tức thì với phép thuật AI--một cú nhấp chuột để có câu trả lời xuất sắc, giọng điệu hoàn hảo, khả năng thông thạo đa ngôn ngữ. Chuyển đổi email một cách dễ dàng! ...

📧 Tự động hoá email: Vắng Mặt (Có sẵn cho POP và IMAP)  /  Lên lịch gửi email  /  Tự động CC/BCC theo quy định khi gửi Email  /  Tự động chuyển tiếp (Quy tắc nâng cao)   /  Tự động thêm lời chào   /  Tự động chia email nhiều người nhận thành các tin nhắn riêng lẻ hữu ích. Cảm ơn !

📨 Quản lý email: Dễ dàng thu hồi email  /  Chặn email lừa đảo theo chủ đề và những người khác  /  Xóa các email trùng lặp  /  Tìm Kiếm Nâng Cao  /  Hợp nhất các thư mục hữu ích. Cảm ơn !

📁 Tệp đính kèm chuyên nghiệpLưu hàng loạt  /  Tách hàng loạt  /  Nén hàng loạt  /  Tự động lưu   /  Tự động tách  /  Tự động nén hữu ích. Cảm ơn !

🌟 Giao diện ma thuật: 😊Thêm nhiều biểu tượng cảm xúc đẹp và thú vị hơn   /  Tăng năng suất Outlook của bạn với chế độ xem theo thẻ  /  Thu nhỏ Outlook thay vì đóng hữu ích. Cảm ơn !

👍 Kỳ quan chỉ bằng một cú nhấp chuột: Trả lời tất cả bằng tệp đính kèm đến  /   Email chống lừa đảo  /  🕘Hiển thị múi giờ của người gửi hữu ích. Cảm ơn !

👩🏼‍🤝‍👩🏻 Danh bạ & Lịch: Thêm hàng loạt liên hệ từ các email đã chọn  /  Chia nhóm liên hệ thành các nhóm riêng lẻ  /  Xóa lời nhắc sinh nhật hữu ích. Cảm ơn !

Trên 100 tính năng Chờ đợi sự khám phá của bạn! Bấm vào đây để khám phá thêm.

 

 

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