以前公開したマクロを使ってメールを送信する動画に複数ファイルを添付する方法について質問がきましたので、今回はその解説をしていきます。
基礎のコードはこの記事を確認してください。
>>マクロを使って複数の相手にファイルを添付してメールを送信する方法
目次
複数ファイル添付のコード全文
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
Sub Outlook2() Dim oApp Dim Wm_ITEM Dim Wm_TO Set oApp = GetObject(, "Outlook.Application") ''↑↑ガン無視↑↑ Dim folder As String Dim FileName As String Dim row As Long Dim shname As String Dim DesktopPath As String, WSH As Variant Set WSH = CreateObject("WScript.Shell") DesktopPath = WSH.SpecialFolders("Desktop") row = 2 shname = "メール _いっぱいver" Do Until row = 5 '★★メール画面を開く Set Wm_ITEM = oApp.CreateItem(0) Wm_TO = "" WS_OutLk = "" If ThisWorkbook.Sheets(shname).Cells(row, 1) <> "" Then '★★宛先、CC、件名、本文を入力してるだけ★★ Wm_ITEM.To = ThisWorkbook.Sheets(shname).Cells(row, 5) '宛先 Wm_ITEM.CC = ThisWorkbook.Sheets(shname).Cells(row, 6) 'CC Wm_ITEM.Subject = ThisWorkbook.Sheets(shname).Cells(row, 7) '件名 Wm_ITEM.Body = ThisWorkbook.Sheets(shname).Cells(row, 3) & _ ThisWorkbook.Sheets(shname).Cells(row, 4) '社名+宛先名 Wm_ITEM.Body = Wm_ITEM.Body _ & vbCrLf _ & ThisWorkbook.Sheets(shname).Cells(row, 8) '社名+宛先名+本文 '★★ファイル添付★★ Dim col As Long col = 9 Do Until ThisWorkbook.Sheets(shname).Cells(row, col) = "" FileName = ThisWorkbook.Sheets(shname).Cells(row, col).Value '添付したいファイル名 Wm_ITEM.Attachments.Add FileName col = col + 1 Loop Wm_ITEM.Display '.displayで 表示 '★★メール保存or送信★★慣れるまでは保存推奨!! ' Wm_ITEM.Save '.Saveで保存下書きへ ' Wm_ITEM.Send '.Sendで送信※コメントを外すと送信されます End If row = row + 1 Loop MsgBox "かんりょ" End Sub |
指定したファイルパスをすべて添付する

前回紹介したマクロからの変更点はファイル添付の箇所だけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
'★★ファイル添付★★ Dim col As Long col = 9 Do Until ThisWorkbook.Sheets(shname).Cells(row, col) = "" FileName = ThisWorkbook.Sheets(shname).Cells(row, col).Value '添付したいファイル名 Wm_ITEM.Attachments.Add FileName col = col + 1 Loop |
何を追加したかと言うと、メール送信用の一覧に添付したファイルパス+ファイル名を入力する欄を追加しています。
で、そのファイルパス+ファイル名の欄が空欄になるまで添付処理をするという処理をループしています。
このコードの活用方法

今回紹介しているコードはあくまでVBAでoutlookを動かすことだけに焦点を当てていますが、このコードうまく活用すればより業務効率化に直結させることができます。
では、具体的にどう活用するかと言うと、このファイルを添付して、メールを送信するマクロの前に、ファイルを作成するマクロを追加するんです。
で、作成したファイルの場所とファイル名を添付ファイルの場所に反映させると。
そうすれば、作成から送信までほぼ自動で完了することができます。
私は実際の業務でもファイル作成+メール送信のマクロを多用しています。
例えば、売上の元データが毎週上がってきて、それを部内で共有しなければいけない場合、今まではいちいち手作業でファイルを作成して、出来上がったファイルを宛先、件名、本文、添付ファイルをポチポチ入力してメール送信していました。
しかし、今回紹介したマクロ+ファイル作成を使えば1ボタンでファイル作成からメール送信までできてしまいます。
ファイル作成のVBAについては需要があれば動画にしていこうと思います。ピポットも罫線も、VlookもVBAでは自動で完了することができます。
まとめ
VBAでoutlookを制御するのってなんか難しいイメージがあるかもしれませんが、今回紹介したようにVBAの延長で全然処理できちゃいます。
ファイル作成までVBAでやっているなら、そのファイルの発信まで視野にいれてVBAを作成すればより業務効率化が進むこと間違いなしです。