Outlook VBAで宛先(To)から挨拶文を自動生成する
はじめに
OutlookでEメールを作成する際、だいたいは決まった挨拶文を書くかと思います。例えば、
To: ◇◇地域振興局建設部 △△課 ○○班 猪鹿技師 様 <[email protected]>
に対して、
◇◇地域振興局 建設部
△△課 ○○班
猪鹿 技師 様
いつも大変お世話になっております。
といった感じに。テンプレートにしている方もいるかと思いますが、多くの人は毎回同じことを手入力したり、以前の送信済メールからコピペしているのではないでしょうか。
連絡先から宛先(To, CC, BCC)に相手のアドレスを入れたときに”挨拶文”を自動で入力できたら便利だと思ったので、これをOutlook VBAで実装してみたいと思います。 (※「自動で」と書きましたが、宛先を入力したときのイベント処理が分からなかったため、ここでは宛先を入れた後にリボンやクィックアクセスツールバーに置いたボタンから起動することとします。)
基本的な考え方
用語
- メインのウィンドウ : Explorer オブジェクト
- それ以外のウィンドウ : Inspector オブジェクト
- 宛先(To,CC,BCC) : Recipients コレクション
- 個々の宛先 : Recipient オブジェクト
- 連絡先ユーザ : AddressEntry オブジェクト
- 連絡先アイテム : ContactItem オブジェクト
前提条件
今回は、基本的な処理の説明ですので、以下の前提条件を付けておきます。
- 「宛先」(メールアドレスや氏名、勤務先の情報)は、Outlookの「連絡先」に必ず入っているものとする
- 新規メッセージ作成ウィンドウでの作業とする (Inspectorオブジェクト)
- メッセージの形式は「テキスト形式」とする (PlainText形式)
- 対象とする宛先は To に一つのみとする
- 作成ウィンドウの宛先(To)に対象のメールアドレスを入力しておく
処理の流れ
基本的な処理の流れは以下の通りです。(確認やエラーの処理は省きます)
- MailItemオブジェクトを取得する
- 宛先 (Recipientsコレクション) を取得し、.Type が olTo だった場合の Index を取得する
- 本文の内容 (MailItem.Body) を取得しておく
- Index に対応する宛先 (Recipientオブジェクト) に対応する連絡先ユーザ (AddressEntryオブジェクト) から 連絡先アイテム (ContactItemオブジェクト) を取得する
- ContactItem から 勤務先、部署、姓(名字)、役職の各プロパティを取得して挨拶文を生成する
- 3で取得しておいた本文の先頭に挨拶文をつなげて本文を上書きする
Public Sub SetEMailHeadline()
'// 変数の定義
Dim myMailItem As MailItem
Dim myRecipient As Recipient
Dim myContactItem As ContactItem
Dim myIndex As Long
Dim tempBodyText As String
Dim tempHeadline As String
'// 1. MailItemの取得
Set myMailItem = Application.ActiveInspector.CurrentItem
'// 2. RecipientsコレクションからToを選んでIndexを取得
For Each myRecipient In myMailItem.Recipients
If myRecipient.Type = olTo Then
myIndex = myRecipient.Index
Exit For
Next
'// 3. 本文の内容を取得
tempBodyText = myMailItem.Body
'// 4. 宛先に該当する連絡先アイテムを取得
Set myContactItem = myMailItem.Recipients.Item(myIndex).AddressEntry.GetContact
'// 5. 各種プロパティを取得
With myContactItem
tempHeadline = .CompanyName & vbCrLf & _
.Department & vbCrLf & _
" " & .LastName & " " & .JobTitle & " 様" & vbCrLf & _
vbCrLf & _
"いつも大変お世話になっております。"
End With
'// 6. 挨拶文を本文の先頭に追加
myMailItem.Body = tempHeadline & tempBodyText
'// オブジェクトの解放
Set myContactItem = Nothing
Set myMailItem = Nothing
End Sub
おわりに
上記のコードでは、考えられる条件分岐やエラー処理などをしていません。次回はそこら辺を詰めていきたいと思います。
Author And Source
この問題について(Outlook VBAで宛先(To)から挨拶文を自動生成する), 我々は、より多くの情報をここで見つけました https://qiita.com/sewege11/items/faacaad04a7c26bc4c00著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .