024 Outlook VBA 署名を使う

こんにちは、くのへ@MasazaneKunoheです。

Outlookでメールを作成すると、署名がメールの最後に作成されます。
しかし、Outlook VBAでメールを作成すると、署名が付きません。
署名を作成する手軽な方法がこちらです。

署名付きのメールを作成するコード

↓このコードをコピペすれば動くと思います。

Sub SignatureTest()

'メールアイテム生成
Dim objMailItem As MailItem
Set objMailItem = CreateItem(olMailItem)

'署名を一時保管する変数
Dim strSignature As String

With objMailItem
    '一度、空メールを表示させ、.htmlbodyから.bodyに署名データを書き込ませ、
strSignatureに著名を覚えさせる。
    .Display
    strSignature = .Body
    
    .To = "testAddress@xx.xx"       '正宛先
    .CC = "CCtestAddress@xx.xx"     'CC宛先
    .BCC = "BCCtestAddress@xx.xx"   'BCC宛先
    .Subject = "test"               '件名
    .BodyFormat = olFormatPlain     'メールフォーマット。イコールの後は次に設定可能。=1:テキスト、=2:HTML、=3:リッチテキスト
    .Body = "testだよ" + strSignature   '本文
    
    .Display    '作成メールを表示する。下書き保存や送信BOXに送る場合は↓こちら
'    .Save      '下書き保存する場合はこれ
'    .Send      '送信ボックスに入れる場合はこれ

End With

End Sub

解説

CreateItem(olMailItem)でメールアイテムを生成すると、署名は「.body」プロパティではなく「.htmlbody」プロパティの中に自動生成されています。
しかし、.bodyに何か書き込むと、.htmlbodyまで上書きされてしまうため、署名が消えてしまいます。

これを解決するために、一度.displayすることで、.htmlbodyの中の署名を.bodyに書き込んで、strSignatureという変数に転記しているのです。


この方法だと、マクロを実行した時にウィンドウがちらついてしまうんですが、これはやむなしかなと思います。
海外サイトなども探してきましたが、.display方式が主流のような感じでした。

実はもう一つ署名を付ける方法があります。
署名が保存されているファイルから署名データを抽出して書き込む方法なんですが、それはまた別の機会に記事にしようと思います。

ではまた別の記事で~
🦅バサバサ~

くのへスタジオはこちら。
Outlook-VBAコーナーはこちら。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です