用于根据文件名字符串进行多个文件附件的Outlook VBA宏

时间:2018-10-30 09:46:03

标签: vba outlook outlook-vba

我有一个适用于Outlook的宏,它将在其中创建新电子邮件。 但是,我需要从特定的本地文件夹附加一些文件,并且附加的文件在文件命名(FILE1_ddmmyyyy)上始终具有当前日期。 例如:FILE1_30102018.xlsx,FILE2_30102018.xlsx

下面是我现在拥有的代码,我不知道如何自动附加文件名为“ * 30102018.xlsx”的文件

Sub FileDraft()

    Dim obApp As Object
    Dim NewMail As MailItem

    'Format(Date, "ddmmyyyy")
    Dim szTodayDate As String
        szTodayDate = Date
    Dim szNextDate As String
    Dim LWeekday As Integer
        LWeekday = Weekday(szTodayDate, vbSunday)

        If LWeekday = "5" Then
            szNextDate = DateAdd("d", 3, szTodayDate)
        Else
            szNextDate = DateAdd("d", 1, szTodayDate)
        End If
        Dim szNextDatereformat As String
            szNextDatereformat = Format(szNextDate, "ddmmyyyy")

    Set obApp = Outlook.Application
    Set NewMail = obApp.CreateItem(olMailItem)

    'You can change the concrete info as per your needs
    With NewMail
         .Subject = "FILES_" & szNextDatereformat
         .To = "Recipient_Address"
         .CC = "contacts_on_the_CC"
         .Body = "messageBodyhere"
         .Attachments.Add ("C:\Attachments\FILE1_30102018.xlsx")
         .Importance = olImportanceHigh
         .Display
    End With

    Set obApp = Nothing
    Set NewMail = Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

要使用通配符获取VBA中的文件列表,可以使用Dir命令。

使用参数调用Dir时,将使用该参数作为文件名模式来开始新的搜索(非常类似于在命令提示符下发出Dir)。它返回与名称匹配的文件名(无路径)。

在不带参数的情况下调用Dir时,它将继续搜索并返回下一个文件。如果找不到(更多)文件,则返回空字符串。

因此,将代码更改为

Const path = "C:\Attachments\"

With NewMail 
    ...
    dim pattern As String, fileName As String
    pattern = path & "*" & szNextDatereformat & ".*"

    fileName = Dir(pattern)
    Do While fileName <> ""
        .Attachments.Add path & fileName 
        fileName = Dir
    Loop
    ...
end With