動的にテンプレと宛先追加が可能なメール文作成マクロです。送信毎に変化する本文内容などは、#を使いキーワード化し、メール作成前にUF上のテキストボックスに入力した値に置き換えます。Google翻訳により本文の英訳、ChatGPTを使うことで本文作成も可能です。VBAとして登録すればエクセル、OutlookVBAから直接実行できます。
・挙動
・ポイント機能
本マクロの概要部分の説明を記載します。
・#キーワード#によるメール文置き換え
・返信と、GPT使用オプション
今回のシステムについては、OutlookClassicで、メール開始数行目に下記記載で始まるメール本文記載を前提としています。もちろん、Infoシートの置き換え文字等を自身のメール型に置き換えれば宛先自動抽出して動的メール作成が可能です。将来的にClassicが使えない噂も出てますが、のちに紹介する#NAIMINMAIL#を使用しなければメール本文自体は作成可能です。
今マクロが前提としているメール冒頭例:
宛先(相手) 送信者(自分)です。
〜本文〜
#キーワード#によるメール文置き換え
メール文作成時には、セルに入力した文章の内、#キーワード#の文字を置き換え対象と見なし、メール作成前に文字を入力してもらいます。一部予約語があり、其々は既定の置き換えが行われます。
--予約語一覧--
- #MAIL宛先#・・・宛先列に入れた値に置き換えられます。
- #MAIL送信者#・・・Infoシートに入れた値に置き換えられます。
- #MAIL本文#・・・ユーザーフォームでMultiline入力ボックスが出てきて、GPT使用オプション(と送信)が選べます。
- #MAIL末尾#・・・Infoシートに入れた値に置き換えられます。入れない場合でも末尾に自動で挿入されます。
- #NAIMINMAIL#・・・返信するメールとして選択したメールを送る相手に置き換えます。宛先は選択したメールボックスにより置き換えられます。受信ボックスから選べばあなた宛てに送信した人に、送信済みボックスから選べばあなたが送信した相手を宛先に置き換えます。
- #MAILADR#・・・宛先を記載したシートから手動で宛先/CCを選択し、選択したメアドに置き換えられます。
下記のような本文があれば、下記のように入力フォームに入力することができます。#MAIL本文#を除いた予約語は自動で置き換えられます。

上記にある予約語以外の#キーワード#がある場合、本文選択時に置き換える変数と判断し、その数の分だけ置き換える値を入力するテキストボックスがUFに表示されます。予約語:#本文#がある場合は末尾に、改行可能な大きめのテキストボックスが表示されます。

#MAIL送信者#、#MAIL末尾#
メールの送信者と末尾に値するこの予約語は、別紙Infoシートに記載している情報に置き換えます。例えば、送信者、末尾を下記のように設定しているとします。そうすると、「○○さん Gakuです。 ~以上」のようなメールが作成されます。3列目は英語用となっており、オブションで英語を押した際に置き換えられるものです。

#NAIMINMAIL#
#NAIMINMAIL#は選択したメールを元に、受信者に置き換えられます。選択したメールが受信と送信ボックスどちらかかを判断し、メール冒頭から送信相手を抽出し置き換えます。
今回は受信ボックス「(あなた)さん ○○です。」や、送信ボックスにある「○○さん (あなた)です。」という冒頭で始まるメールを想定にしています。冒頭からkeywordを取得して双方を比較することで○○の部分を抜き出します。
マクロ内容は下記で紹介しています。
#MAILADR#
ワークシート上で登録したメアド表から、メール選択時に自分で選択することができます。この予約語がある場合、別紙のメアド表を基にしたUFが表示され、複数選択ができます。表示ではメアド以外の名前等の情報を表示させることで、誰であるかを直感的にわかるようにしています。

オプション:英訳、返信、ChatGPT使用
登録する本文は#キーワード#なしでも機能しますが、ある場合は上記予約語含めて入力フォームが出現します。#キーワードに応じて#3つオプションが出現します。
- 英/Eng・・・本文と宛先を英訳します。*宛先の表記は「Dear ○○ san, from ○○」と訳されます。
- GPT使用・・・本文作成をAIに命令し分かりやすくまとめたりできます。
- 返信・・・作成メールを別メールにかぶせて返信できます。

返信オプション
#NAIMINMAIL#があった場合は、選択したメールに対する返信のため、出現しません。また、メールが新規作成の場合(#NAMEINMAIL#がない場合は返信か新規どちらかと判断)は#MAIL件名#が出現し、新規作成時メールの件名入力ができます。チェックして返信すると入力不可となります。

英訳オプション
下記のような登録テンプレに基づき、UFを入力し英訳を押します。記載した入力値に基づき、件名とともに英訳されます。


また、テンプレにて”#NAIMINMAIL#”がある場合は自動的に返信がされます。その際メール本文の文頭に応じて英語か日本語かを判定します。仮に下記メールのような英文メールを選択したとします。

文頭の「san」、「from」のどちらかがあると、英文のやり取りしているメールと判定し、テンプレの内容が自動で英訳されます。もしオプションで英訳チェックボタンがなかったとしても自動で英訳されます。これにより迅速なメール返信と英訳漏れを回避します。


英訳時は下記マクロを利用しています。
GPT使用オプション
#本文#が記載されていた場合に出現します。依頼が複雑であったり英訳したりなどしたい場合、プロンプトを入力し指示ができます。プロンプトはInfoシートに記載文章にあり、チェックするとテキストボックスに入力されます。その下に内容を記載し送信することで、APIを発火させ、JSONコンバータで抽出した返答に#本文#が置換えられます。

また、ChatGPTに送るプロンプト内容は別紙から登録可能です。必要に応じて下記部分の文章を置き換えることで、目的の返答取得が可能です。もちろん空欄で、UF上でそのままプロンプトを記載することでも問題ありません。

なおGPT使用のためには、APIキーの取得が必要です。ChatGPTのサイトから、会員登録をして課金することでAPIキーを取得することが可能です。別シートのAPIキー記載箇所に転記してください。
ChatGPT返答取得マクロは下記から使用できます。
・Outlookタブから1クリック呼び出し
今メール作成マクロの神髄はOutlookアプリから呼び出すことにあります。VBAプロシージャはMS系ファイルの他、Outlookのようなアプリからでも呼び出すことができます。つまり、単なる端的なメール作成の他、選択メールによる動的なメール作成が可能な今マクロは、Outlookから呼び出すことでさらに大きな効果を発揮します。

上記のようにホームタブの冒頭に任意の名前タブで登録可能です。指定のエクセルを呼び出してマクロを実行することで、上記で紹介したUFを開き、選択メールに対する動的なメール作成をより迅速にすることができます。
スクリプトではファイルを呼び出して最小化する処理等をしています。下記で紹介しています。



