Excel/VBAでメール送信するには(Outlook使用)
会社で関係者間で頻繁にメールしたりしますが、もうちょっと自動化できないかなと思って、Excelからメール送信するマクロを作ってみました。というのも、Excelファイルでデータを確認して状況に応じてメールする、という手作業の処理があるのですが、メール本文も宛先も毎回同じなので、もうちょっとサクサクできないものかと。・・・という不満があったので、マウスクリック2回でサクッとメールできるマクロを作った次第です。
先に言っておきますが、Outlookを使用します。なので、Windows内にOutlookがなかったり、アカウント設定されていない場合は使えませんのであしからず。
[ad#top-1]
まずはソース全体を公開
こちらが、Excel上でメール送信するマクロのソースコードです。細かい説明は後述します。
僕が実際に使っているのはもうちょっと複雑なのですが、わかりやすく必要最小限のソースに収めました。
実行するとこんな感じ
このマクロを実行すると、Outlookとメールフォームが立ち上がり、宛先や本文、添付ファイルが自動でセットされます。この先は手作業になりますが、メールフォームの送信ボタンを押してメールを送ります。
Outlook本体は立ち上げず、メールフォームだけということも可能ですが、その場合はメールが送信トレイに置かれたままになり送信されませんので、Outlook本体は立ち上げておく必要があります。
こちらがGmailで受信したメールです。添付ファイルも含めちゃんと受信できました。
ソースコードの解説
それでは、ソースコードをパーツごとに解説します。
まずは、Outlookの起動です。この部分がなくても以降のプログラムでメールフォームが立ち上がってメールを作成することは可能なのですが、送信ボタンを押しても送信トレイに残ったままになるので、やはりOutlookは立ち上げておく必要があります。
次に、メールの作成です。今回は本文をHTML形式に設定しています。 以下のように宛先、件名、添付ファイルをセットします。
最後にメール本文です。HTML形式に設定しましたので、HTMLタグを使ってみました。もちろんテキスト文でもOKです。これをセットし、mail.Displayでセットしたメールフォームを立ち上げます。
メールフォームが起動したら、そのまま送信ボタンを押せばOKです。マクロを起動するためのボタンを含めればマウスでクリック2回のみでメールが送れるようになります。
botはさすがに難しいですが、ルーチンでメールを送るようなケースには、こんな感じで半自動化して業務効率を上げていけば良いかと思います。
[ad#ad-1]
スポンサーリンク