Outlook VBA テンプレートの差出人変更

Outlookのテンプレートにいくつかの変更を自動で加え、異なる差出人へ変更してからメールを送信したいと思うことがあり、その時に使った方法をまとめておく。

失敗:SendUsingAccountの変更

まず、以下のようにしてSendUsingAccountの変更をしたところ、私の会社PCの環境では上手く機能しなかった。

Dim objItem As MailItem
Dim Template
Template = "テンプレート.oftのパス"
Set objItem = Application.CreateItemFromTemplate(TEMPLATE_FILE)
objItem.SendUsingAccount = Session.Accounts.Item("変更後の差出人アドレス")

失敗:テンプレートファイル(.oft)の差出人を指定できす

そこで、Outlookテンプレートの.oftファイルを作成する際に予め差出人を変更したものを作れないかと思ったが、これもまた作成することができなかった。

解決策:.oftテンプレートの代わりに.msgファイルを使う

いろいろ試してみたところ、.msgファイルであれば予め差出人を変更したファイルを作成できることがわかった。

また、Application.CreateItemFromTemplate()は.oftファイルからだけでなく、.msgファイルからでもメールの作成することができ、それに対してVBAで変更を加えることができることがわかった。

このことから、下記のように予め差出人を変更指定した.msgファイルを利用する方法に置き換えれば上手くいった。

Dim objItem As MailItem
Dim Template
Template = "テンプレート.msgのパス" 'この.msgファイルの差出人を予め指定のものにしておく
Set objItem = Application.CreateItemFromTemplate(TEMPLATE_FILE)