複数のアドレスごとに決まったパターンの複数のファイルを添付してメールを送信するマクロ


コメントにて以下のご要望をいただきました。


現在、複数のアドレスに、それぞれ異なるPDFファイル(ファイルの名前は全部違う、数字①_日付け_数字②で次のような形、000000_20190929_00)を添付して、メールを送っています。アドレスが600件、添付ファイルは2,000個位を毎月手作業で毎回添付してから送信しています。

数字①が同じものは、同じ人に送信するので、自動でPDFファイルをメールアドレスに添付できるマクロを作成できればと考えています。ファイル名の一部だけ同じものを自動で添付できるのか?
人によって添付ファイルは3個だったり10個だったり、毎月決まっていません。

マクロでこのような作業はできるでしょうか?
マクロの作り方を、教えていただけたら、大変たすかります。
outlook2010、windows7を使っています。


ご質問の作業をマクロで実施する場合、以下のような流れになると考えられます。

  1. あらかじめ、宛先アドレスと数字①のペアをテキスト ファイルに記載しておく
  2. 添付する PDF ファイルは同じフォルダーにまとめて格納しておく
  3. 1. のファイルを読み込み 2. のファイルを条件に応じて添付して送信するマクロを実行する

まず、宛先アドレスと数字① (プレフィックス) については、以下のような書式でテキスト ファイルに書き込みます。

user1@example.com,0000000
user2@example.com,0000001
user3@example.com,0000002

このファイルをマクロで読み込むには、Open ステートメントでファイルを開き、Input ステートメントで 1 行ずつ文字列を取り込みます。
特定のフォルダーからプレフィックスの文字列で始まるファイルを取得するには、Dir 関数を使用します。
Dir 関数の引数として “c:\temp\000000*.pdf” というような文字列を指定すると、c:\temp フォルダーに含まれる 000000 から始まる PDF ファイルのファイル名が取得できます。

マクロは以下のようになります。
LIST_FILE にはアドレスとプレフィックスを格納したテキスト ファイル名、ATT_FOLDER には添付する PDF ファイルを保存するフォルダー、SUBJECT_TEXT には送信するメールの件名、BODY_TEXT には送信するメールの本文を記載してください。

' ここをトリプルクリックでマクロ全体を選択できます。

Public Sub SendBulkMailWithAttachment()
     Const LIST_FILE = "c:\temp\list.txt"
     Const ATT_FOLDER = "c:\temp"
     Const SUBJECT_TEXT = "添付ファイル送付"
     Const BODY_TEXT = "添付ファイルを送信します。"
     Dim strAddr As String
     Dim strPrefix As String
     Dim objMail As MailItem
     Dim strFile As String
     ' アドレスとプレフィックスのリストを開く
     Open LIST_FILE For Input As #1
     ' リスト ファイルの終わりまで繰り返し
     While Not EOF(1)
         ' ファイルの内容を 1 行読み込み
         Input #1, strAddr, strPrefix
         ' 新規メール作成
         Set objMail = CreateItem(olMailItem)
         ' あて先を設定
         objMail.To = strAddr
         ' 件名と本文を設定
         objMail.Subject = SUBJECT_TEXT
         objMail.Body = BODY_TEXT
         ' 添付ファイルを格納しているフォルダーからプレフィックスで始まるファイル一覧の取得
         strFile = Dir(ATT_FOLDER & "\" & strPrefix & "*.pdf")
         While strFile <> ""
             ' ファイルを添付
             objMail.Attachments.Add ATT_FOLDER & "\" & strFile
             ' 次のファイル名を取得
             strFile = Dir()
         Wend
         ' メールを送信
         objMail.Send
     Wend
     ' リスト ファイルを閉じる
     Close #1
End Sub

マクロの登録方法やメニューへの追加について

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中