vba - 使用 VBA 在 Outlook 2003 中循环 PST

标签 vba outlook pst outlook-2003

在 Outlook 2007 中,我可以使用如下代码遍历邮件存储,包括 PST:

Dim stores As Outlook.stores
Set stores = objNamespace.stores
Dim store As Outlook.store

For Each store In stores
    MsgBox store.FilePath
Next

但是,在 Outlook 2003 中,Outlook.store 和 Outlook.stores 对象不存在。

Outlook 2003 中是否有等效对象? 我还可以使用什么其他方法来遍历邮件存储?

谢谢。

最佳答案

此 Outlook 2003 示例代码将遍历高级邮箱并将某些属性打印到即时窗口。我根据您的要求选择了看起来最有用的属性。

Sub LoopThruMailboxes()

Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim mailboxCount As Long
Dim i As Long
Dim folder As Outlook.MAPIFolder

' get local namespace
Set olApp = Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")

mailboxCount = olNS.Folders.count

For i = 1 To mailboxCount
  Set folder = olNS.Folders(i)

  Debug.Print folder.EntryID
  Debug.Print folder.StoreID
  Debug.Print folder.Name
  Debug.Print folder.FolderPath
Next i

End Sub

folder.Name 是邮箱的名称,folder.StoreID 是商店ID(我不确定你所说的“存储文件路径”是什么意思,无论如何,我没有看到任何看起来相关的东西)。

这是一个函数化版本,它以数组形式返回文件夹名称和存储 ID,您可以将其直接分配给列表框:

Function GetMailBoxInfo() As String()

Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim mailboxCount As Long
Dim i As Long
Dim folder As Outlook.MAPIFolder
Dim tempString() As String

' get local namespace
Set olApp = Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")

mailboxCount = olNS.Folders.count

' size array accordingly
ReDim tempString(1 To mailboxCount, 1 To 2)

For i = 1 To mailboxCount
  Set folder = olNS.Folders(i)

  tempString(i, 1) = folder.Name
  tempString(i, 2) = folder.StoreID
Next i

  GetMailBoxInfo = tempString

End Function

例如:

ListBox1.List = GetMailBoxInfo

关于vba - 使用 VBA 在 Outlook 2003 中循环 PST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8041842/

相关文章:

excel - 有没有办法阻止 outlook 中的自动解析?

excel - WorksheetFunction.CountA - 升级到 Office 2010 后无法正常工作

vba - 在 protected 工作表上的未锁定单元格中禁用复制/粘贴?

vba - 如何访问标记完成日期?

vba - 如何在 Outlook 中将约会添加到共享日历?

java - 在 Outlook 中触发外部 API 调用,回复来自特定电子邮件 ID 的电子邮件

java - 显示 java-libpst 的 PSTMessage 的简单方法

vba - 如何在标准模块中使用Target参数?

python - 如何在 Linux 下将 EDB(ms 交换存储文件)提取到 PST? (最好是Python)

java - MS-Outlook PST 文件和 MS-Outlook MSG 文件之间有什么关系?