こんにちは、くのへ@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方式が主流のような感じでした。
実はもう一つ署名を付ける方法があります。
署名が保存されているファイルから署名データを抽出して書き込む方法なんですが、それはまた別の機会に記事にしようと思います。
ではまた別の記事で~
🦅バサバサ~