VBA拡張版:Excelグラフを画像化してHTMLメールに埋め込む
ここまでで「HTMLメールにアイコンや画像を埋め込む」方法を紹介しました。さらに一歩進めて、Excelで生成したグラフ(Chart)を画像化してHTMLメールに埋め込む拡張版を作りましょう。これにより、処理結果をグラフで可視化して通知できます。
手順の流れ
- Excelでグラフを作成
- 任意のシートにグラフを作成(例:棒グラフ)
- グラフを画像ファイルとして保存
.Exportメソッドで PNG/JPG として保存
- CDO.Messageでメール送信
- 添付ファイルを本文に埋め込み(Content-ID参照)
サンプルコード
Option Explicit
'=== グラフを画像化してHTMLメールに埋め込む ===
Sub SendChartMailHTML()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim chartFilePath As String
' グラフを作成(例:Sheet1のA1:A5を棒グラフ化)
Set ws = ThisWorkbook.Sheets("Sheet1")
Set chartObj = ws.ChartObjects.Add(Left:=100, Top:=50, Width:=400, Height:=300)
chartObj.Chart.SetSourceData Source:=ws.Range("A1:A5")
chartObj.Chart.ChartType = xlColumnClustered
' グラフを画像として保存
chartFilePath = ThisWorkbook.Path & "\chart.png"
chartObj.Chart.Export Filename:=chartFilePath, FilterName:="PNG"
' メール送信
Dim objMsg As Object
Dim 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タスク通知】グラフ付きレポート"
' 添付ファイルを本文に埋め込み
.AddAttachment chartFilePath
' HTML本文にグラフ画像を埋め込み(cid参照)
.HTMLBody = _
"<html><body>" & _
"<h2 style='color:blue;'>📊 グラフ付きレポート</h2>" & _
"<p>以下は処理結果のグラフです。</p>" & _
"<img src='cid:chart.png'>" & _
"</body></html>"
.Send
End With
MsgBox "グラフ付きHTMLメールを送信しました", vbInformation
End Sub
VBこの拡張版のポイント
- Excelグラフを画像化 →
.Exportメソッドで PNG に保存 - CDO.Messageで添付+埋め込み →
cid:chart.pngで本文に表示 - HTMLメール本文にグラフを直接表示 → 管理者が一目で結果を把握可能
実務でのメリット
- 数値だけでなくグラフで通知 → 視覚的に分かりやすい
- 自動レポート化 → タスクスケジューラと組み合わせれば「毎月の集計結果をグラフ付きメールで送信」可能
- 監査・報告に便利 → 管理者やチームにそのまま共有できる
✅ まとめ
- Excelグラフを
.Exportで画像化 - HTMLメールに
cidで埋め込み - 成功/失敗通知に加えて「処理結果をグラフで可視化」できる


