【OUTLOOK VBA】署名を残したまま本文を追加する方法
今回はOUTLOOK VBAで署名をそのままに、本文を追加する方法を教えます。
メールアイテム.Body = "~"
OUTLOOK VBAでこのように書くと、メール本文に文字を書き込むことができます。
しかし、このやり方をすると設定している"署名"が消えてしまうという問題がありました。
サイトや本などでも、こういったコードが紹介されていますが、署名は消えてしまいます。
今回紹介する方法では署名はそのままに、本文を追加できるので活用してみて下さい。
署名を残したまま本文を追加する方法
Sub AddTextToEmailWithWordEditor()
Dim objMail As Outlook.MailItem
Dim objInspector As Outlook.Inspector
Dim objDoc As Object ' Word.Document
Dim strBody As String
' 新しいメールアイテムを作成
Set objMail = Application.CreateItem(olMailItem)
' 追加したい本文を設定
strBody = "ここに追加したい本文を入力します。" & vbCrLf & vbCrLf
' メールのインスペクタを取得
Set objInspector = objMail.GetInspector
' Wordエディタのドキュメントを取得
Set objDoc = objInspector.WordEditor
' 本文を追加
objDoc.Content.InsertBefore strBody
' メールを表示
objMail.Display
' オブジェクトを解放
Set objDoc = Nothing
Set objInspector = Nothing
Set objMail = Nothing
End Sub
これが署名を残したままにするサンプルプログラムです。
このプログラムを実行すると、新規メールが作成され、本文の先頭に「ここに追加したい本文を入力します。」と追記されます。(末尾には署名が残ります)
' メールのインスペクタを取得
Set objInspector = objMail.GetInspector
' Wordエディタのドキュメントを取得
Set objDoc = objInspector.WordEditor
' 本文を追加
objDoc.Content.InsertBefore strBody
本文を追加しているのはこの部分です。
ここでは、新規メールが使用しているWordエディタを利用して本文を追加しています。
実はOutlookのメール作成では内部でWordを使用しています。
そこで、メールが使用しているWordエディタオブジェクトを取得し、Wordエディタのメソッドで先頭に本文を追加しています。「objDoc.Content.InsertBefore」のInsertBeforeというメソッドです。
この方法ならば、追加だけで署名を消したりしないため、署名をそのままに本文を追加することができます。