Макрос Outlook VBA для нескольких вложенных файлов в соответствии со строкой имени файла - PullRequest
0 голосов
/ 30 октября 2018

У меня есть рабочий макрос для 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 голосов
/ 30 октября 2018

Чтобы получить список файлов в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...