【问题标题】:Outlook script used to download attachments stopped working用于下载附件的 Outlook 脚本停止工作
【发布时间】:2020-06-26 15:37:28
【问题描述】:

我有一个位于下方的小脚本,用于从包含主题中特定单词的电子邮件中下载附件。

它运行了一段时间,但最近我遇到了间歇性问题,无法下载附件。

我开始认为问题是规则而不是脚本。

Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "path where to save file"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "\inventory.csv"
Set objAtt = Nothing
Next
End Sub

这是规则:

Apply this rule after the message arrives
with CPN in the subject
  and on this computer only
run Project1.saveAtachtoDisk

你们是我最后的希望,因为没有其他人可以帮助我。

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    用事件处理程序替换规则

    Private WithEvents Items As Outlook.Items 
    Private Sub Items_ItemAdd(ByVal item As Object) 
      On Error Goto ErrorHandler 
      Dim Msg As Outlook.MailItem 
      If TypeName(item) = "MailItem" Then
        Set Msg = item 
        saveAttachtoDisk(Msg)
      End If
    ProgramExit: 
      Exit Sub
    ErrorHandler: 
      MsgBox Err.Number & " - " & Err.Description 
      Resume ProgramExit 
    End Sub
    

    【讨论】:

    • 添加多个项目(超过 16 个)时不会触发 ItemAdd 事件。规则是更好的方法。
    【解决方案2】:

    尝试将任何日志记录语句添加到 VBA 宏子中,以确保在 Outlook 中触发规则。例如,您可以创建一个文本文件并在其中添加日志条目。

    saveFolder = "保存文件的路径"

    代码中具体指定的文件夹路径是什么?

    For Each objAtt In itm.Attachments
      objAtt.SaveAsFile saveFolder & "\inventory.csv"
    

    您似乎保存了同名的附件。在这种情况下,多个附件将被覆盖 - 只有一个文件将保存在磁盘上。是这样吗?

    【讨论】:

    • 是的,我想覆盖文件。我只是下载某个文件和它通过FTP程序自动放入过去文件夹中的旧文件。我只想自动下载文件并自动 FTP 到我的服务器(目前运行良好)。
    猜你喜欢
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 2015-05-15
    相关资源
    最近更新 更多