【问题标题】:Set reference to PST folders设置对 PST 文件夹的引用
【发布时间】:2018-07-12 17:12:49
【问题描述】:

我在 Outlook 中打开了几个 PST 文件,我需要在 Excel 中列出这些 PST 中的所有邮件。

我的代码列出了我的收件箱中的邮件,我找不到如何在所有打开的 PST 中进行搜索。

这是我的 Outlook 的结构:

  • 收件箱

    • 草稿
    • 已删除的项目
    • 垃圾邮件
  • 预算

  • 库存
  • 国家

我需要在其他文件夹中搜索(预算、库存、国家...)。

这是我的代码:

Sub List_mails()

Dim olapp As New Outlook.Application
Dim ns As Object, Dossier As Object
Dim OlExp As Object
Dim i As Object
Dim mybody() As String
Dim fromsender As String

Set ns = olapp.GetNamespace("MAPI")
Set Dossier = ns.GetDefaultFolder(olFolderInbox)
b = 2
For Each i In Dossier.Items
    Cells(b, 1) = i.Subject
    Cells(b, 2) = i.ReceivedTime
    Cells(b, 3) = i.SenderEmailAddress
    b = b + 1
Next i
End Sub

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    最简单的方法是像这样遍历命名空间中的所有文件夹

    For Each f In ns.Folders
        MsgBox (f.Name) '// for testing that you get all folders
    Next f
    

    然后重用您用于默认文件夹的代码

    【讨论】:

      【解决方案2】:

      您按照建议的方法使用.GetDefaultFolder
      要获取默认文件夹以外的特定文件夹,请使用.Folders

      Set Dossier = ns.Folders("Budget")
      

      如果您在这些文件夹中有子文件夹,那么您可以使用以下内容:

      Dim sDossier As Outlook.Folder
      Dim Dossier As Outlook.Folder
      
      Set Dossier = ns.Folders("Budget")
      
      For Each sDossier In Dossier
          '/* put your loop here for items */
      Next
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 2019-12-13
        • 1970-01-01
        • 1970-01-01
        • 2015-08-09
        • 1970-01-01
        相关资源
        最近更新 更多