新規作成のメッセージに日付を埋め込む方法


コメントにて以下のようなご要望をいただきました。


あるタイミングで送信している定型メールがあるのですが、
シフト制の仕事の為、メールを送る担当者がバラバラなのです。
その為、テンプレートを保存している場所も様々で、このマクロのように場所を固定することができません。
また、送信するメールの内容によって、YY/MM/DD、YYMMDD、MM/DD、MMDDと日付の表現が変わります。

たとえば、テンプレート(oftファイル)を開いたタイミングで、マクロを自動で実行させるようなことはできないでしょうか?
また、”yyyy/mm/dd”固定ではなく、YY/MM/DD、YYMMDD、MM/DD、MMDDのいづれかがあった場合、のように
することはできるのでしょうか?


テンプレートを開いたタイミングという限定的な方法はありませんが、アイテムを開いたタイミングでそのアイテムがメールかつ送信前だった時に特定の文字列を置き換えるというようなことは可能です。
下記のマクロは、本文に含まれる %%yyyy%% や %%yy%%、%%mm%%、%%dd%% どを現在の年月日に置き換えるマクロです。

' ここをトリプルクリックでマクロ全体を選択できます。
' 新しいインスペクタが開かれる際のイベントをハンドルするためのオブジェクトを宣言
Dim WithEvents myInspectors As Inspectors
' 起動時に上記のオブジェクトに設定
Private Sub Application_Startup()
    Set myInspectors = Application.Inspectors
End Sub
' 新しいインスペクタが開かれた場合の処理
Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)
    Dim strBody As String
    Dim objItem
    ' 開かれたアイテムを取得
    Set objItem = Inspector.CurrentItem
    If objItem.MessageClass = "IPM.Note" Then ' アイテムがメール
        If objItem.Sent = False Then ' アイテムが送信前
            strBody = objItem.Body
            strBody = Replace(strBody, "%%yyyy%%", Year(Now)) ' %%yyyy%% は 4 桁の年
            strBody = Replace(strBody, "%%yy%%", Right(Year(Now), 2)) ' %%yy%% は 2 桁の年
            strBody = Replace(strBody, "%%mm%%", Right("0" & Month(Now), 2)) ' %%mm%% は月
            strBody = Replace(strBody, "%%dd%%", Right("0" & Day(Now), 2)) ' %%dd%% は日
            If objItem.Body <> strBody Then objItem.Body = strBody
        End If
    End If
End Sub

マクロの登録方法やメニューへの追加について

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中