Есть ли способ в VBA для Outlook выводить разные фразы в зависимости от времени суток, не используя документ Excel? - PullRequest
1 голос
/ 10 марта 2020

Я делаю процесс 3 раза в день и в своих электронных письмах, чтобы показать, какие процессы я выполняю, и пишу AM, Noon или PM в своем электронном письме. Мне было любопытно, если в электронной почте VBA есть способ выполнить sh в шаблоне.

Мне нужно, чтобы этот вход имел динамический набор c символов (AM, полдень или PM) в теме и теле, исходя из времени суток.

По сути, я бы хотел, чтобы оно отображалось как AM до 10:00, как полдень между 10:00 и 14:00 и как PM "после 14:00.

Возможно ли это, или мне лучше использовать другой метод в целом вместо того, как я сейчас занимаюсь этим?

На данный момент у меня есть шаблон AM, полдень и PM, но было бы здорово, если бы у меня был один динамический шаблон c.

Мой текущий код AM ниже:

Sub CreateNewMail()
    Dim obApp As Object
    Dim NewMail As MailItem

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

    With NewMail
         .Subject = "Docs " & Format(Date, "m.d.yy") & " AM"
         .To = "Mr. Nobody"
         .Body = "Attached are the docs for " & Format(Date, "m.d.yy") & " AM."
         .Display
    End With

    Set obApp = Nothing
    Set NewMail = Nothing
End Sub

1 Ответ

1 голос
/ 11 марта 2020

Работа с Функция времени Возвращает вариант (Дата), указывающий текущее системное время. и Select ... Case Statement (Visual Basi c) , который запускает одну из нескольких групп операторов в зависимости от значения выражения.


Пример

Option Explicit
Sub CreateNewMail()

    Dim info As String

    Select Case True

        Case Now <= TimeValue("10:00:00 AM")
            info = " AM" 
            Debug.Print info

        Case Now > TimeValue("10:00:00 AM") And Now < TimeValue("02:00:00 PM")
            info = " Noon" 
            Debug.Print info

        Case Now >= TimeValue("02:00:00 PM")
            info = " PM" 
            Debug.Print info

    End Select

End Sub

Метод Debug.Print печатает в окне «Немедленно»


Чтобы использовать его в вашем коде см. пример ниже

Option Explicit
Sub CreateNewMail()

    Dim info As String ' - < added

    Select Case True

        Case Now <= TimeValue("10:00:00 AM")
            info = " AM" ' - < added
            Debug.Print info

        Case Now > TimeValue("10:00:00 AM") And Now < TimeValue("02:00:00 PM")
            info = " Noon" ' - < added
            Debug.Print info

        Case Now >= TimeValue("02:00:00 PM")
            info = " PM" ' - < added
            Debug.Print info

    End Select

    Dim obApp As Object
    Set obApp = Outlook.Application

    Dim NewMail As MailItem
    Set NewMail = obApp.CreateItem(olMailItem)

    With NewMail
         .Subject = "Docs " & Format(Date, "m.d.yy") & info ' - < added
         .To = "Mr. Nobody"
         .Body = "Attached are the docs for " & _
                              Format(Date, "m.d.yy") & info ' - < added
         .Display
    End With

    Set obApp = Nothing
    Set NewMail = Nothing
End Sub
...