【问题标题】:Outlook VBA to Save Multiple Attachments as Different NamesOutlook VBA 将多个附件保存为不同的名称
【发布时间】:2016-08-30 02:13:47
【问题描述】:

这是我目前所拥有的:

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "P:\ME\TEST\"
Dim dateFormat
dateFormat = Format(Now, "yyyy.mm.dd")
 For Each objAtt In itm.Attachments
        If InStr(objAtt.FileName, "ASDFA ADSF.pdf", vbTextCompare) > 0 Then
      objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ASDF.pdf"
        ElseIf InStr(objAtt.FileName, "GASD.pdf", vbTextCompare) > 0 Then
        objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ADSF ADD.pdf"
        ElseIf InStr(objAtt.FileName, "ASDF AD.pdf", vbTextCompare) > 0 Then
        objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ASDF.pdf"
        ElseIf InStr(objAtt.FileName, "ASDF AS.pdf", vbTextCompare) > 0 Then
        objAtt.SaveAsFile saveFolder & dateFormat & " asd asdf.pdf"
        Else
        objAtt.SaveAsFile saveFolder & "Caught"
  End If
  Set objAtt = Nothing
 Next
End Sub

我使用随机字母只是为了保护隐私。我正在尝试让 Outlook 使用规则和 VBA 将电子邮件附件自动保存为特定名称,并在前面加上日期。我在这里做错了什么?

【问题讨论】:

  • 你得到的结果是什么?是出现错误还是显示不正确?
  • 什么也没发生。什么都没有保存。该规则正在运行并将消息标记为已读。如果有帮助,则该规则特定于我的名字,因此我只是将电子邮件转发给自己,然后让它运行以查看它是否保存附件。它运行 VBA 中项目 1 下的脚本。该脚本在模块 2 中(删除了模块 1,所以我认为这就是为什么它是 2)。

标签: vba outlook save attachment


【解决方案1】:

我猜你没有写信给P:\ME\TEST\ 的权限,或者你没有进入你的If 语句来保存。

您想将If 行设置为> 0

If InStr(objAtt.DisplayName, "BBB AAA.pdf") > 0 Then

如果任何字符位于该名称以外的第一个位置,则它不会进入If。当然,这也可能是你想要的行为。

您可以通过添加以下内容来测试它是否未命中 If 语句:

Else
    objAtt.SaveAsFile saveFolder & "not caught.pdf"
End If

如果添加Else 代码后没有保存,请尝试保存到本地文档文件夹。然后,如果你仍然没有得到任何保存,MailItem 没有任何附件。

编辑: 应该是这样的:

【讨论】:

  • 我有权限,我尝试了 > 0 并进行了测试,看看它是否没有命中并且没有任何保存。有什么建议?我不知道还有什么方法可以让它击中。这是一个仅限客户端的规则,如果有帮助,我会尝试保存到服务器。
  • 您是否在For Each 循环中设置了断点以查看它是否进入您的For Each
  • 我该怎么做?我是 VBA 的新手,所以非常感谢您的帮助!
  • 代码左侧的灰色列,在代码行旁边的该列中左键单击,最好是第一行代码If,应该会出现一个红点。然后,运行您的应用程序,如果有任何附件,代码应该在您的断点处“暂停”。当它停止时,它将是红色并以黄色突出显示。然后,您想通过转到 View > Locals Window 来查看您的 Locals 窗口,展开一次 itm,您应该会在其中看到 Attachments。如果你走到那一步,请告诉我。
  • 当我收到电子邮件时,本地人没有任何消息。规则运行并将消息标记为已读,但它不能运行脚本。不知道这里发生了什么。我将断点放在第一个 if 语句中。
猜你喜欢
  • 2023-02-02
  • 1970-01-01
  • 2018-11-14
  • 2016-09-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 2015-05-08
  • 1970-01-01
相关资源
最近更新 更多