【问题标题】:Combining multiple personal folder inboxes into one using VBA/Outlook使用 VBA/Outlook 将多个个人文件夹收件箱合并为一个
【发布时间】:2017-11-21 13:30:51
【问题描述】:

我想知道是否有办法使用 VBA/Outlook 来查看多个个人文件夹(全部添加到 Outlook 并称为个人文件夹)并将收件箱的内容(该文件夹将始终称为收件箱)复制到单个 PST/收件箱/文件夹。个人文件夹的数量取决于完成的电子邮件搜索 (GVault)。

个人文件夹 - 收件箱, 个人文件夹 - 收件箱, 个人文件夹 - 收件箱, 最终个人文件夹 - 收件箱

目的是为用户提供一份包含所有电子邮件的 PST。

这是简化我们的电子邮件存档搜索过程的尝试的一部分,该过程为搜索中找到的每个电子邮件地址创建一个文件夹 + PST(好老的谷歌......)显然将它们全部组合成一个 PST 是一场噩梦然后我们可以将其提供给用户。可以(使用 Outlook)手动将每个 PST 与主 PST 组合,但这远非自动化流程 + 可能存在大量单独的电子邮件地址。

最初的问题是把所有的 PST 都带入 Outlook,这已经解决了,但格式如上所述(单独的 PST 全部添加)。

任何帮助都将不胜感激,因为我无法克服这最后一道障碍,在 Outlook 中确实有一些脚本可以操纵 PST,但他们只是不这样做。

谢谢 丹

【问题讨论】:

  • 我不认为这是一个最后的障碍,而更像是一条起跑线。到目前为止,您尝试过什么?
  • 我很感激这看起来对我来说并没有太多的努力,但这已经持续了好几个小时,我两周前才开始看 VBA,所以我倾向于碰壁很快。在我看来,从其他人那里添加不符合我要求的代码只会引起混乱……对我来说。

标签: vba outlook pst


【解决方案1】:

以下代码将循环您的 Outlook 附加 PST 文件,将名为“收件箱”(任何情况)文件夹中的文件复制到名为“主 PST”的 PST 中

包括非常琐碎的错误检查

'include reference to Microsoft Outlook XX.0 Object Library
Public Sub copyInbox()
    Dim ns As Outlook.Namespace

    On Error GoTo hell

    Dim sourceFolder As Outlook.MAPIFolder
    Dim copyToFolder As Outlook.MAPIFolder
    Dim subfolder As Outlook.MAPIFolder
    Dim objItem As Outlook.MailItem
    Dim objItemCopy  As Outlook.MailItem
    Set ns = Application.GetNamespace("MAPI")
    Set copyToFolder = ns.Folders("MASTER PST").Folders("Inbox")
    'Personal folder called 'MASTER PST' with inbox subfolder must exist
    For Each sourceFolder In ns.Folders
        For Each subfolder In sourceFolder.Folders
            If Trim(UCase(subfolder.Name)) = "INBOX" Then
                For Each objItem In subfolder.Items
                    'modified below to use copy as per MSDN
                    'https://msdn.microsoft.com/en-us/vba/outlook-vba/articles/mailitem-copy-method-outlook
                    Set objItemCopy = objItem.Copy
                    objItemCopy.Move copyToFolder
                Next
            End If
            'copy items in subfolders in inbox can be added here
        Next
    Next
    Exit Sub:
hell:
    MsgBox Err.Description, vbExclamation, Err.Source
End Sub

【讨论】:

  • 感谢史蒂夫,我会测试并通知您。
  • 嗨@stevebiko,我在第一次运行时遇到错误,尝试删除 end if 和 next 但错误不断弹出。 link layout link with end if link without end if 再次感谢
  • 抱歉格式化,我在编码 Linebreaks 时没有运气 用两个空格结束一行以添加
    换行符:
  • 我已经尝试了新代码,但它返回一个错误,指出“对象不支持此方法”我试图将部分代码替换为“objItem.copy copyToFolder” “ActiveDocument.Copy copyToFolder”,但它现在返回错误“需要对象”@stevebiko
猜你喜欢
  • 1970-01-01
  • 2023-01-18
  • 2010-12-27
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多