将 Outlook 消息保存到 VBA 在本地驱动器中创建的文件夹中

Posted

技术标签:

【中文标题】将 Outlook 消息保存到 VBA 在本地驱动器中创建的文件夹中【英文标题】:Saving an Outlook message to a folder created in local drive by VBA 【发布时间】:2017-06-10 09:17:44 【问题描述】:

我用 VBA 创建了一个文件夹。

Sub ExtractEmail()

    Dim OlApp As Outlook.Application
    Set OlApp = New Outlook.Application
    Dim Mailobject As Object
    Dim Email As String
    Dim NS As NameSpace
    Dim Folder As MAPIFolder
    Set OlApp = CreateObject("Outlook.Application")

    Dim fso As Object
    Dim fldrname As String
    Dim fldrpath As String

    ' Setup Namespace
      Set NS = ThisOutlookSession.Session
    ' Display select folder dialog
      Set Folder = NS.PickFolder
    ' Create Folder File
      Set fso = CreateObject("Scripting.FileSystemObject")

    ' loop to read email address from mail items.
    For Each Mailobject In Folder.Items
    fldrname = Mailobject.To
    fldrpath = "\\abc\" & fldrname
    If Not fso.folderexists(fldrpath) Then
        fso.createfolder (fldrpath)
    End If

    Set objCopy = Mailobject.Copy
    objCopy.SaveAs fldrpath, olMSG

    Next
    Set OlApp = Nothing
    Set Mailobject = Nothing

End Sub

当我尝试使用时

Mailobject.SaveAs fldrpath, olMSG

要将邮件保存到文件夹中,我无法写入文件。

右击文件夹,然后在快捷菜单上点击属性查看文件夹的权限,我看到属性为只读。

您能帮我找出替代方案吗?

【问题讨论】:

你能发布完整的代码吗? 如果它是只读的,那么您可能需要考虑将权限更改为读写? 【参考方案1】:

您必须将完全限定的文件名传递给 SaveAs。您传递的只是文件夹名称:

objCopy.SaveAs fldrpath & "\test.msg", olMSG

【讨论】:

非常感谢!这行得通。 :) 你能否帮助我了解如何使邮件主题名称动态化。我使用了以下语法 Subjectname = Mailobject.Subject 但无法放入您提到的“\test.msg”。 objCopy.SaveAs fldrpath & "\" & objCopy.Subject,olMSG。但是您需要确保没有非法(对于字段名称)字符,例如“:”等。【参考方案2】:
fldrpath = "\\abc\" & fldrname & 
"\"
savepath = fldrpath & Mailobject.Subject & Format(Now(), "yyyy-mm-dd-
hhNNss")
savepath = savepath & ".msg"

If Not fso.folderexists(fldrpath) Then
fso.createfolder (fldrpath)
End If


Set objCopy = Mailobject.Copy
objCopy.SaveAs savepath, olMSG

【讨论】:

此代码在最后一行抛出错误操作失败。任何人都可以找出相同的解决方法吗?我正在尝试复制邮件并将其粘贴到保存路径中。

以上是关于将 Outlook 消息保存到 VBA 在本地驱动器中创建的文件夹中的主要内容,如果未能解决你的问题,请参考以下文章

OUTLOOK VBA 收到新邮件后自动保存包含特定字符的附件到指定文件夹

显示高级搜索项目而不保存在文件夹中 Outlook vba

Outlook 中的 VBA:“Microsoft Outlook 已停止工作”消息

有没有办法将位于我的网站目录中的文件复制到我的本地驱动器访问vba

用于将工作簿保存到网络驱动器的 VBA 代码 [关闭]

Outlook VBA 代码仅适用于一台计算机