・VBAでプログラミングを覚えたからには、メール送信までやってみたい!
・アウトルックでメールで送信することは知っているが、具体的な方法はちゃんと分かっていない…
・Outlookのオフィスソフトやインターネットエクスプローラとエクセルを連携させてみたい!
・メールを自動送信して、仕事をラクに終わらせたい!
そんなことを考えているなら、この記事を読んでみてください。この記事では、
・ExcelVBAでアウトルック連携マクロを自力で書く
・Officeアプリケーションのオブジェクトモデル
こんなとっておきの情報を紹介します。コードもあわせて紹介しますので、ぜひこのまま読みすすめていってください。
そもそもエクセルマクロVBAとは?とギモンに感じているなら、こちらの記事がオススメです。
目次
- 1 エクセルマクロでメールを送信する事例
- 2 エクセルマクロでメールを自動送信するメリット/デメリット
- 3 「アウトルックを操作してメール送信する」マクロの難易度は?
- 4 アウトルックでメール送信する前に参照設定を変更する
- 5 outlookメールを自動で作成し送信する|サンプルコードを使って解説
- 6 メールをHTML形式にして、フォント変更やハイパーリンクを貼る|サンプルコードを使って解説
- 7 テンプレートファイルをダウンロードしたい方はコチラから
- 8 もし重要度、開封確認を取得したり、送信日時を取得したいなら
- 9 差し込みメールで複数の宛先に一斉送信したいなら
- 10 Outlookメールを時間指定で送信したいなら
- 11 VBAを使ってGmailで作成したメールを自動送信する方法
- 12 outlookの受信メールを読み込んで、エクセルに一覧で表示する方法
- 13 メール送信を含めた外部アプリケーション連携を深く学ぶなら
エクセルマクロでメールを送信する事例
イメージをつかんでもらうために、事例を紹介します。まずは「メールを自動送信する」ということを理解していただければ、と思います。
なお、この記事で「これから紹介するコード」と「動画の内容」はやや異なる点があります。
エクセルマクロでメールを自動送信するメリット/デメリット
エクセルマクロVBAでメールを自動送信することで、さまざまなメリットがあります。同時にデメリットもありますので、いくつか紹介します。
アウトルック操作のメリット
まず、メリットから紹介します。
2.作業の確認時間が減る
3.仕事のミスが減る
1.カンタンに始めることができる
Excelがインストールされていれば、自ずとOutlookもインストールされているため、新しく開発環境を作る必要がありません。もちろん無料です。
2.作業時間が減る
定型文を自動でメール送信/返信できるようになるので、メールにかける時間がガクンと減らせます。
3.仕事のミスが減る
ボタン一発で、複数人に異なるメールを送ることができるようになります。宛先確認やタイプミスによるメールの未送信、そういったみすを減らせます。
さらに、動画デモで紹介しているような差し込みでのメールが送信できるようになれば、仕事を仕組み化できるようになるので、人に仕事を渡すことができるようになります
アウトルック操作デメリット
何かを学ぶときは、メリットだけではなく、デメリットもあります。
2.ウェブ上にコードがあまり出回っていない
3.本でも、アウトルックの有益な情報やコードが少ない
1.コード編集に難しさを感じることがある
VBAでアウトルック操作を学ぶとき、オブジェクトの知識が乏しい場合、コード編集に難しさを感じるでしょう。VBAでエクセルを操作をするときと違って、アウトルック独自のオブジェクトが多数出てきます。これが、混乱する原因になります。
その結果、途中で挫折してしまう…ということがあります。
2.ウェブ上にコードがあまり出回っていない
アウトルック操作は、エクセルVBAの外部連携というカテゴリーです。外部アプリケーションを操作することは、レベルの高い機能ですので、ウェブ上にコードが出回っていません。
もちろん、逆に言えば、これが使えるようになれば、VBAを使いこなす人の中でも、かなりレベルの高い層に仲間入りできます。
3.本でも、アウトルックの有益な情報やコードが少ない
私は、アウトルック操作について、書店に出向いて、本を探した時期があります。しかし、ほとんど本は出回っていません。もちろん、ないわけではないのですが、情報が古かったりして、苦戦を強いられました。
そういう経験もあり、この記事で、アウトルック操作をしたいあなたに情報を届けることにしました。
「アウトルックを操作してメール送信する」マクロの難易度は?
アウトルックでメール送信マクロを学ぶとき、どれくらいで習得できるの?
そんな質問をもらうことがあります。
その答えは、あなたがエクセルマクロVBAをどれくらい知っているかに依ります。
もしあなたが、Excel VBAのキホンを抑えていれば、試行錯誤しながら、なんとかコードを書きあげることができるでしょう。
というのも、アウトルック、powerpointやwordなどのオフィスアプリは、ExcelとVBAの仕様が共通です。大きく異なるのは「扱うオブジェクト」だけ。
ですので、Excelでオブジェクトモデルについて理解できていれば、扱いに苦労はしないでしょう。しかし、あまりにも理解が乏しいと、難しく感じるかもしれません。もし、オブジェクトと聞いて「ピン」と来ない方は、まずはこちらでExcel VBAの基本について学ぶことをオススメします。
アウトルックでメール送信する前に参照設定を変更する
エクセルVBAでoutlookのメールを操作するためのプログラミングに入る前に、準備しておくことがあります。
準備|VBEで外部ライブラリへの参照設定でOutlook型を追加
参照設定とは、機能拡張させること、です。
Microsoft Outlook 15.0 Object Libraryにチェックを入れることで、Outlook操作の設定ができるようになります。バージョンが古い場合、15.0ではないときがあります。もし15.0ではなく、数字が小さい場合は、それにチェックを入れましょう。
1.VBEを開いて頂いて、「ツール」→「参照設定」
2.Microsoft Outlook 15.0 Object Libraryのライブラリにチェックを入れて、OKをクリック
詳細はこちらの画像の通りです。
1.VBEを開いて頂いて、「ツール」→「参照設定」
2.Microsoft Outlook 15.0 Object Libraryのライブラリにチェックを入れて、OKをクリック
outlookメールを自動で作成し送信する|サンプルコードを使って解説
それでは、ここからは、VBAでアウトルック操作してメール送信する方法をサンプルコードを合わせて紹介します。
まずは、「アウトルックを起動してメールを送信する」という事例を、コードと合わせて紹介します。具体的には、以下のことをやっていきます
コード2|差出人、本文、署名を取得する
コード3|メールを作成して、差出人、本文、署名を入れ込む
コード4|メール本文を改行して署名を入れる|vbCrLfをつかう
コード5|自動で添付ファイルを付ける
コード6|メールを送信する
コード7|outlookを閉じる(オブジェクトの解放)
エクセルファイルのセルには、以下の画像のセルに値を入れておきます。
サンプルコードのマクロで処理すると、メールが自動生成されます。
以下、全体のコードです。必要なら、このままコピペして使ってください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
Option Explicit Sub sendmail_sample1() ' '---コード1|outlookを起動する Dim toaddress, ccaddress, bccaddress As String '変数設定:To宛先、cc宛先、bcc宛先 Dim subject, mailBody, credit As String '変数設定:件名、メール本文、クレジット、添付 Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成 Dim mailItemObj As Outlook.mailItem 'Outlookで使用するオブジェクト生成 '---コード2|差出人、本文、署名を取得する--- toaddress = Range("B2").Value 'To宛先 ccaddress = Range("B3").Value 'cc宛先 bccaddress = Range("B4").Value 'bcc宛先 subject = Range("B5").Value '件名 mailBody = Range("B6").Value 'メール本文 credit = Range("B7").Value 'クレジット '---コード3|メールを作成して、差出人、本文、署名を入れ込む--- Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem) mailItemObj.BodyFormat = 3 'リッチテキストに変更 mailItemObj.To = toaddress 'to宛先をセット mailItemObj.cc = ccaddress 'cc宛先をセット mailItemObj.BCC = bccaddress 'bcc宛先をセット mailItemObj.subject = subject '件名をセット '---コード4|メール本文を改行する mailItemObj.Body = mailBody & vbCrLf & vbCrLf & credit 'メール本文 改行 改行 クレジット '---コード5|自動で添付ファイルを付ける--- Dim attached as string Dim myattachments As Outlook.Attachments 'Outlookで使用するオブジェクト生成 Set myattachments = mailItemObj.Attachments attached = Range("B9").Value '添付ファイル myattachments.Add attached '---コード6|メールを送信する--- 'mailItemObj.Save '下書き保存 mailItemObj.Display 'メール表示(ここでは誤送信を防ぐために表示だけにして、メール送信はしない) '---コード7|outlookを閉じる(オブジェクトの解放)--- Set outlookObj = Nothing Set mailItemObj = Nothing End Sub |
それでは、一つずつコードを解説していきます。
コード1|outlookを起動する
1 2 3 4 |
Dim toaddress, ccaddress, bccaddress As String Dim subject, mailBody, credit As String Dim outlookObj As Outlook.Application Dim mailItemObj As Outlook.mailItem |
1行目:変数設定:To宛先、cc宛先、bcc宛先
2行目:変数設定:件名、メール本文、クレジット
3行目:Outlookで使用するオブジェクト生成
4行目:Outlookで使用するオブジェクト生成