VBA拡張版:複数シートをまとめて1つのPDFにしてメール添付
これまで「ダッシュボードをPDF化してメール添付」する方法を紹介しました。今回はさらに拡張して、複数シートをまとめて1つのPDFにしてメール添付するテンプレートです。これにより、部門別レポートや複数の集計結果を一括配信できます。
手順の流れ
- 対象シートを選択(例:Sales, Error, Stock)
- ExportAsFixedFormatで複数シートをまとめてPDF化
- CDO.Messageでメール送信
- PDFファイルを添付
- HTML本文に説明を記載
サンプルコード
Option Explicit
Sub SendMultiSheetPDFMail()
Dim pdfFilePath As String
Dim wsArray As Variant
'=== 対象シートを指定 ===
wsArray = Array("Sales", "Error", "Stock") ' 複数シート名
'=== PDFファイルパス ===
pdfFilePath = ThisWorkbook.Path & "\multi_report.pdf"
'=== 複数シートをPDF化 ===
ThisWorkbook.Sheets(wsArray).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFilePath, Quality:=xlQualityStandard
'=== メール送信 ===
Dim objMsg As Object, objConf As Object
Set objMsg = CreateObject("CDO.Message")
Set objConf = CreateObject("CDO.Configuration")
' SMTP設定(例:Office365)
With objConf.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "your_account@domain.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "your_password"
.Update
End With
With objMsg
Set .Configuration = objConf
.From = "your_account@domain.com"
.To = "admin@domain.com"
.Subject = "【VBAタスク通知】複数シートレポート(PDF添付)"
' PDFファイルを添付
.AddAttachment pdfFilePath
' HTML本文
.HTMLBody = _
"<html><body>" & _
"<h2 style='color:blue;'>📊 複数シートレポート</h2>" & _
"<p>Sales・Error・StockシートをまとめたPDFレポートを添付しました。</p>" & _
"<p>添付ファイルをご確認ください。</p>" & _
"</body></html>"
.Send
End With
MsgBox "複数シートをまとめたPDFを添付したメールを送信しました", vbInformation
End Sub
VBこの拡張版のポイント
- 複数シートをまとめてPDF化 →
Sheets(Array(...)).Select→ExportAsFixedFormat - CDO.Messageで添付送信 → PDFをメールに添付
- HTML本文は簡潔に → 添付ファイルを主役に
実務でのメリット
- 部門別レポートを一括配信 → Sales・Error・Stockなどをまとめて送信
- 印刷や保存に適した形式 → PDFは改ざんされにくく、監査にも最適
- 完全自動化可能 → タスクスケジューラと組み合わせれば「毎月の総合レポート」を自動送信
✅ まとめ
- 複数シートをまとめてPDF化
- メールに添付して一括配信
- 部門別や複数データをまとめた「総合レポート」を自動送信可能


