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.
For instance, on Navigation pane you move a folder and drop to an unknown folder by mistake in Outlook, you want to restore this folder but cannot find out it immediately. Unfortunately, Outlook does not support the Find feature same as that in Microsoft Word or Excel. Do not worry! You can apply a VBA macro to solve this problem in Outlook.
Please follow below steps to search for folders by folder names with VBA in Outlook.
1. Press Alt + F11 keys together to open the Microsoft Visual Basic for Applications window.
2. Click Insert > Module, and then paste below VBA code into the new Module window.
VBA: Search and open folders by folder name in 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. Press F5 key or click the Run button to run this VBA.
4. In the popping out Search folder dialog box, please type the specified folder name you will search by, and click the OK button. See screenshot:
Note: This VBA supports asterisk wildcard. For example, you can type tes* to find out all folders whose name begin with tes.
5. Now a dialog box comes out and shows the folder path of found folder. If you need to open the found folder, please click the Yes button.
And now the found folder is opening on the Navigation pane as below screenshot shown:
Note: If there are more than one folders named with the specified name, this VBA can find and open one folder only.