如何在VBA for Outlook中为“搜索文件夹”设置文件夹变量?

时间:2019-03-26 17:42:02

标签: vba outlook outlook-vba

我是一个完整的初学者,所以请放轻松。

我正在从某些Outlook文件夹中提取一堆电子邮件主题行。在我的VBA代码中,我为每个需要主题的文件夹重置了一个“文件夹”变量。

除了我需要从中搜索主题的文件夹是搜索文件夹的一种情况之外,所有其他操作都可以。

似乎有一个SearchFolders东西,我可以将变量变暗,但是我不知道如何为它设置特定的文件夹。

我可以使用以下方式设置常规文件夹和子文件夹:

设置myFolder = myNamespace.Folders(“ fake@email.com”)。Folders(“头文件夹”).Folders(“子文件夹”)

但不是“搜索文件夹”。

我需要调暗“ SearchFolders”吗?如何将搜索文件夹设置为变量?

2 个答案:

答案 0 :(得分:0)

要访问搜索文件夹,请使用Store.GetSearchFolders()-它返回Folders集合,其中包含商店中的所有搜索文件夹(包括最终用户不可见的搜索文件夹)。

答案 1 :(得分:0)

Sub FindSearchFolderByName()
    
    Dim objStores As Stores
    Dim objStore As Store
    
    Dim objSearchFolders As folders
    Dim objSearchFolder As Folder
    
    Dim fldrName As String
    Dim bFound As Boolean
    
    Dim myFolder As Folder
    
    fldrName = "Unread Mail"
    
    Debug.Print
    Debug.Print "Searching for " & fldrName
    
    Set objStores = Session.Stores
 
    For Each objStore In objStores
        Debug.Print
        Debug.Print "objStore: " & objStore
        bFound = False
        
        Set objSearchFolders = objStore.GetSearchFolders
        
        For Each objSearchFolder In objSearchFolders
        
            Debug.Print " objSearchFolder: " & objSearchFolder
            
            If objSearchFolder.Name = fldrName Then
            
                Debug.Print " Found in " & objStore
                bFound = True
                
                Set myFolder = objSearchFolder
                Set ActiveExplorer.CurrentFolder = myFolder
                
            End If
            
            If bFound = True Then Exit For
            
        Next
        
        If bFound = False Then Debug.Print " Not found in " & objStore
    Next
    
End Sub