デスクワークを超絶快適にするおすすめギアたち詳しく見る

【超初心者向け】添付ファイルの名前を本文やメールタイトルに挿入する

この記事でわかること

  • 添付するファイルの名前をメール本文に自動挿入する方法がわかる。
  • コピペで使えるOutlook VBAコードがわかる。
目次

添付ファイルの名前をメールの本文やタイトルに挿入する。

Outlook VBA マクロ 添付ファイル

▲「添付ファイルを添付するときは、本文中に添付ファイル名を記入する」というルールで運用されているメールを見かけたことがあるでしょうか。

メールのマナーとしてやっていらっしゃる方もいるかもしれませんし、意図しない添付ファイルではありませんよーというセキュリティ対策の意味もあるかもしれません。わたしは以前勤めていた会社でこのルールが適用されていたシーンがありましたのでやっていました。

ただ、添付ファイル名をコピペして本文中に張り付けるのって意外に面倒ですよね。添付するファイルが複数あると余計うっとしいです。そこで、この作業をマクロで自動化する方法について紹介したいと思います。

じょじお

マクロを使えばファイル添付を行うと同時に添付ファイル名を本文に自動挿入できます。

今回の作業内容

じょじお

以下の内容で作業します。

今回作業する3つのステップ

  1. メールテンプレートを作成します。
  2. Outlook マクロを作成します。
  3. マクロをテスト実行して結果を確認します。

(STEP1)メールテンプレートを作成する。

ぽこがみさま

メールテンプレートを作成します。

STEP
メールテンプレートを作成します。
Outlook VBA マクロ 添付ファイル

▲図のようなメールテンプレートを作成しました。作成したメールテンプレートは.oft形式で保存します。赤字の部分をマクロで文字列置換します。

HTMLメール形式で保存します。

メールテンプレートを作成する方法については下記の記事で解説していますのであわせてご覧ください。

STEP
おわり

(STEP2)マクロを作成します。

ぽこがみさま

次はVBAでマクロコードを記述します。

STEP
VBEを開きます。

ショートカットキー:Alt+F11を押してVBEを開きます。「VBEって何?」という方や初めてOutlook VBAを使う方は下記の記事で解説で解説していますのでご覧ください。

STEP
VBEの標準モジュールにマクロを記述します。
Sub attached_file_name1()
    ''ファイルダイアログを表示して添付するファイルを要求して、
    '''本文に添付ファイル名リストを挿入します。
    '''
    

    '■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\注文書の送付2.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
    Dim str_attached_file_name As String
    For Each SelectedItem In fdFolder.SelectedItems
        objItem.Attachments.Add SelectedItem
    Next
    
    
    '■5.選択されたファイルをメールテンプレートに1個ずつ添付する
    Dim SelectedItem
    For Each SelectedItem In objItem.Attachments
        str_attached_file_name = str_attached_file_name & "<li>" & SelectedItem & "</li>"
    Next
    str_attached_file_name = "<ol>" & str_attached_file_name & "</ol>"
    objItem.HTMLBody = Replace(objItem.HTMLBody, "◆ここに添付ファイル名挿入◆", str_attached_file_name)
    
    
    Set excelObject = Nothing
End Sub

▲標準モジュールに上記のコードを書きました。コピペで使えます。コードの解説は後述します。

STEP
VBAコードを保存します。

コードをコピペしたらCtrl+Sで保存します。VBEは閉じて大丈夫です。

(STEP3)マクロの実行

STEP
マクロを実行します。

マクロを実行してみましょう。Alt+F8でマクロ一覧を表示して先ほど作成したマクロ名を選択して実行ボタンをクリックします。

(この方法はOutlook画面からマクロを実行する方法です。VBEからマクロを実行する場合は実行ボタンを押します。)

Outlook VBA マクロ 添付ファイル

▲先ほど作成した「attached_file_name1」というマクロを選択して実行します。

STEP
ファイルダイアログが開くので添付ファイルを選択します。
Outlook VBA マクロ 添付ファイル

▲添付ファイルを選択します。複数選択する場合はCtrlキーを押しながら選択してください。

STEP
マクロが実行完了してメールテンプレートが開きます。
Outlook VBA 添付ファイル

▲赤字の部分がテンプレートでは「◆ここに添付ファイル名挿入◆」と書かれていた部分が添付ファイル名のリストに置き換わりました。

(図の中でテキストが赤字になっているのは解説のためにわかりやすくテンプレートファイルの中で赤字にしています。マクロの処理でやっているわけではありません。)

STEP
メールの内容に問題がなければ送信します。

問題がなければ通常のメールと同じように送信ボタンで送信します。もちろん本文に追記したり修正したりすることも可能です。

STEP
おわり

VBAのワンポイント解説

STEP
選択したファイルをメールテンプレートに添付する処理

21行目から45行目はメールテンプレートにファイルを添付する処理です。こちらのコードについては下記で解説していますのでご覧ください。

STEP
添付ファイル名からHTMLリストを作成する処理
'■5.選択されたファイルをメールテンプレートに1個ずつ添付する
For Each SelectedItem In objItem.Attachments
    str_attached_file_name = str_attached_file_name & "<li>" & SelectedItem & "</li>"
Next
str_attached_file_name = "<ol>" & str_attached_file_name & "</ol>"
objItem.HTMLBody = Replace(objItem.HTMLBody, "◆ここに添付ファイル名挿入◆", str_attached_file_name)

▲この部分で、HTMLのリストを作っています。HTMLでリストを表現するには<ol>タグの中に<li>タグを使って下記のように表現します。

<ol>
    <li>添付ファイル1</li>
    <li>添付ファイル2</li>
    <li>添付ファイル3</li>
</ol>

▲HTMLリストの例

STEP
文字列を置換する処理
objItem.HTMLBody = Replace(objItem.HTMLBody, "◆ここに添付ファイル名挿入◆", str_attached_file_name)

この部分で作成したHTMLリストを、Replace関数を使って置換しています。

Replace関数
Replace(ターゲットとする文字列, 検索する文字列, 置換後の文字列)

添付するファイルに制限をかけたい場合は?

添付するファイルをExcelだけ・PDFだけのように制限をかける方法や、ファイルの複数選択を拒否する方法は下記の記事で解説していますのでご覧ください。

メールタイトル(件名)に添付ファイル名を挿入したい

メールタイトルに添付ファイル名を挿入したい場合は、objItem.Subject = objItem.Subject & ”添付ファイル名”のようにobjitem.subjectに添付ファイル名を含んだ文字列を渡します。

まとめ

じょじお

添付するファイルの名前をメール本文に自動挿入する方法について解説しました。

ぽこがみさま

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

Outlook時短術おすすめの本

▲情報も新しくMicrosoft 365にも対応した本です。わたしはOutlook歴10年以上ありますが知らないことがかなりあったのとOutlookもすごい進化してるんだなと思いました。365に乗り換えたばかりの方に読んでほしいです。

Power Automate学習教材

Power AutomateをKindleで学びたい方はコチラ

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

Power Automate for Desktopの基本をしっかり学習するのにオススメです。RPA界隈では有名なRPAエンジニア集団である『ロボ研』さんが監修されている解説書です。テスト用の業務Webシステム/デスクトップ業務アプリを使いながら実践形式で学習できる点が一番のメリットかなぁと思います。

Power Automate クラウドフローの入門書です。日本語の解説書は数少ないのでレアかと思います。変数の解説から代表的なアクションの解説がされているので初心者におすすめの本です。

Microsoft 365/ Power Automate / Power Platform / Google Apps Script…

Power Automateを動画で学びたい方はコチラ

▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。

この記事が気に入ったら
フォローしてね!

シェアしてくれたらウレシイ(·:゚д゚:·)
  • URLをコピーしました!
  • URLをコピーしました!
目次
閉じる