


いつも同じ業務メールを送信する時、下記のようなお悩みないでしょうか?
メールにおける悩み
- 添付ファイル付けるの忘れたて送信してしまった・・・

「添付ファイル」付け忘れ。ありがちですよね。

今回は、マクロを利用した添付ファイル付け忘れ防止の案を紹介します。
添付ファイルを添付忘れを防ぐ方法は?
解決策:Outlook VBAを使ってメールを作成する。
なんでOutlookマクロを使うと添付忘れないの?

マクロからメールを送信するようにして、マクロの処理の中で添付ファイルを添付するようにします。

マクロの中で強制的にファイル添付するので添付忘れしません。

さらにメールテンプレートと組み合わせて使えば、ミスも減るし時短にもなるよ。
今回紹介するマクロは下記のような処理をします。
Outlookマクロの処理の流れ
- マクロを実行する。
- ファイルピッカーが開いて、ユーザにファイルを選択させる。
- ユーザが選択した添付ファイルと、メールテンプレートをもとにメールが自動作成される。
Outlookマクロを使用する方法は?

下記の流れでマクロを使うための準備をしていきます。
マクロを起動するための準備
- メールテンプレートを準備する。
- Outlookでマクロを使えるようOutlookの設定にする。
- Outlookの「マクロの設定」でセキュリティレベルを変更する。
- Outlookの「開発」タブを表示する。
- OutlookでExcelの機能を使うための参照設定をする。
- マクロを記述する。
マクロを作成する手順!

▲今回テストとして上記のようなメールを想定します。
(STEP1)メールテンプレートファイルを準備する。

▲こんな感じでメールテンプレートを作成します。注文書の送付メールを想定しました。

▲メールテンプレートって何?とか作り方がわからない方はこちらの記事をご参考になさってください。
(STEP2)Outlookでマクロを使えるように設定変更にする。
Outlook ではデフォルトの状態ではマクロ機能が無効になっています(セキュリティのため)。セキュリティ設定を変更してマクロを使える準備をします。
Outlook で行う設定
- トラストセンターの「マクロの設定」のセキュリティレベルの変更する。
- 「開発」タブを表示させる

▲設定方法についてはコチラの記事で解説しています。
(STEP3)Outlook VBAでExcelの機能を使えるように設定する。
今回のマクロではファイルダイアログというExcelの機能を使います。そのためOutlook からExcelの機能を呼び出すための設定を行います。

▲設定方法については上の記事をご参考になさってください。(Excel Object Libraryの参照設定)
(STEP4)マクロコードを記述します。
Sub Attach_files_to_a_mail() '''ファイルダイアログを表示してユーザにファイルを選択してもらいます。 '''選択したファイルを所定のメールテンプレートに添付して開きます。 ''' ''' '■1.Excelを呼び出す処理(ファイルダイアログを呼び出すため) Dim excelObject As Excel.Application Set excelObject = New Excel.Application excelObject.Visible = False 'Excelは非表示にする '■2.メールテンプレートを呼び出す処理 Dim objItem As MailItem '下記にメールテンプレートのパスを入力してね。 Set objItem = Application.CreateItemFromTemplate("C:\Users\user\AppData\Roaming\Microsoft\Templates\注文書の送付.oft") '■3.ファイルダイアログを設定して表示する処理 Dim fdFolder As Office.FileDialog Set fdFolder = excelObject.Application.FileDialog(msoFileDialogFilePicker) With fdFolder .InitialFileName = "%userprofile%\" '一番最初に開くフォルダのパスを記述します。 .AllowMultiSelect = True '複数ファイルの選択を許可する場合はTrue・しない場合はFalse .Title = "メールに添付するファイルを選択してください(複数選択可)。" '選択できるファイルを制限するには下記のようにフィルターを追加してください。 ' .Filters.Add "Excels", "*.xls* ", 1 ' .Filters.Add "Images", "*.png; *.jpg; *.jpeg", 2 ' .Filters.Add "Documents", "*.doc*; *.pdf; *.txt ", 3 ' .Filters.Add "csv", "*.csv", 4 ' .Filters.Add "any", "*.*", 5 ' .FilterIndex = 1 'デフォルトのフィルターをindexで指定します。 .Show 'ファイルダイアログを表示します。 End With '■4.選択されたファイルをメールテンプレートに1個ずつ添付する Dim SelectedItem For Each SelectedItem In fdFolder.SelectedItems objItem.Attachments.Add SelectedItem Next objItem.Display '添付ファイル付けたあとにメールテンプレートを表示します。 'objItem.Send '送信も自動化する場合はこの行のコメントアウトを外してください。ただし送信ボタンは人間が押すことをおススメします。 Set excelObject = Nothing End Sub
▲VBEの標準モジュールに上記のコードをコピペします。
以上で準備完了です。VBEは閉じます。
作成したマクロを使ってみよう!

準備ができたので実際に使ってみたいと思います。

▲マクロを一覧を呼び出します(ショートカットキー:Alt+F8)。作成したマクロを選択して実行をクリックします。


▲選択したファイルが添付された状態でメールが開きます。内容を確認して必要があれば加筆して送信しましょう。
コードを改造したい。
ファイルの複数添付を許可しないとか、添付できるファイルに制限を持たせる(Excelだけ許可とか)場合は下記の記事のを参考にプロパティの値を変更してください。
メールテンプレートを使わないで空っぽのメールに添付ファイルを付ける。

▲一応メールテンプレートを使わないバージョンも用意しました。
まとめ

以上Outlookマクロを使ったファイル添付の自動化についてご紹介しました。

このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材

▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。

▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。

▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。