【问题标题】:How to save Outlook attachments in subfolders based on Subject string如何根据主题字符串将 Outlook 附件保存在子文件夹中
【发布时间】:2014-05-09 11:20:20
【问题描述】:

我是 VBA 的新手,但我们将不胜感激!

问题:

我从工作中得到一系列报价,这些报价采用电子邮件形式,但包含一个或多个附件文件。我希望它们自动存储在一个文件夹下,如下所示:

C:\Users\username\Desktop\Quotes\########\

######### 在电子邮件的主题行中给出,格式为:“Standard Quote ########”。

到目前为止,我已经知道如何自动将文件保存在一个 \ Quotes \ 文件夹中,但我不知道如何从电子邮件的主题标题中提取数字字符串######## ...

Public Sub saveQuote(itm As Outlook.MailItem)

Dim myItem As MailItem

Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "C:\Users\user\Desktop\Quotes"
     For Each objAtt In itm.Attachments
          objAtt.SaveAsFile saveFolder & "\" & myItem.Subject & objAtt.DisplayName
          Set objAtt = Nothing
     Next

End Sub

【问题讨论】:

  • 如果数值是主题的最后一段,这应该很容易。试试Right function 或更好的Split function

标签: vba outlook save attachment subject


【解决方案1】:

按照我的评论试试这个:
如果数字部分固定为 8 个字符

Dim myqoute

myqoute = Right(itm.Subject, 8)

如果没有,请使用Split

myqoute = Split(itm.Subject, " ")(Ubound(Split(itm.Subject, " ")))

然后在您的文件名中使用它。
但是,如果您想创建一个目录(每个 qoute 编号的子文件夹),请使用 MkDir

MkDir "C:\Users\" & Environ$("username") & "\Desktop\Qoutes\" & myqoute
objatt.SaveAsFile "C:\Users\ & Environ$("username") & "\Desktop\Qoutes" & _
            myqoute & "\" objatt.DisplayName

我使用Environ 函数来提高用户灵活性。
希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    相关资源
    最近更新 更多