【问题标题】:Download Email from Specific Outlook Folder and Save从特定 Outlook 文件夹下载电子邮件并保存
【发布时间】:2015-03-11 02:04:54
【问题描述】:

我在下面的行中收到运行时错误 5“无效的过程调用或参数”

 Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox)
  • 转到 Outlook 中标题为“电子表格”的文件夹 - 那里将有 2-3 封电子邮件。可能已读,可能未读 - 所以我不想像我在这里看到的一些代码那样限制为未读。
  • 将这些电子邮件中的所有附件下载到我桌面上的文件夹中
  • 然后删除位于该电子表格 Outlook 文件夹中的所有电子邮件(我尚未将这部分包含在代码中)

我尝试过修改代码。但我一直无法让它工作。我想我只是在理解每个部分的作用时遇到了一些麻烦。

Sub GetAttachments()

Dim oOlAp As Object, oOlns As Object, oOlInb As Object
Dim oOlItm As Object, SubFolder As Object, oOlAtch As Object
Dim NewFileName As String
Const AttachmentPath As String = "\\dsapc429pfs.pactual.net\homefolder02$\wellsty\Desktop\Testing Email Download"

NewFileName = AttachmentPath & "Work?"

Set oOlAp = GetObject(, "Outlook.Application")
Set oOlns = oOlAp.getnamespace("MAPI")
Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox)
Set SubFolder = oOlInb.Folders("Test")
If SubFolder.oOlItm.Count > 0 Then
For Each oOlAtch In oOlItm.attachments
oOlAtch.SaveAsFile NewFileName & oOlAtch.FileName
Exit For
Next
Else: End If


End Sub

【问题讨论】:

  • 这个错误是否以某种方式解决了?

标签: vba excel outlook


【解决方案1】:

首先,我建议从 MSDN 中的Getting Started with VBA in Outlook 2010 文章开始。

您需要按如下方式更改 for each 循环:

'~~> Store the relevant info in the variables
For Each oOlItm In SpecFolder.Items
    eSender = oOlItm.SenderEmailAddress
    dtRecvd = oOlItm.ReceivedTime
    dtSent = oOlItm.CreationTime
    sSubj = oOlItm.Subject
    sMsg = oOlItm.Body
    For Each att in oOlItm.Attachments
        att.SaveAsFile Environ("HOMEPATH") & "\My Documents\" & att.FileName
    Next
    oOlItm.Delete()
    Exit For
Next

您对将附件保存到指定路径的SaveAsFile 方法感兴趣。

Delete 方法从包含该项的文件夹中删除该项。

【讨论】:

  • 我在设置工作簿时遇到错误。请查看新的修改。
  • 你在说什么错误?你能说得更具体点吗?
  • 对不起,我刚刚完成了编辑。这是运行时错误。
  • 我一直在阅读的所有地方都说这是必要的代码行。但根据我的excel它是无效的。
  • 在编辑器中尝试设置对 Microsoft Outlook XX.X 对象库的引用。工具菜单 |参考文献
猜你喜欢
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
相关资源
最近更新 更多