こちらに「Excelの範囲をそのままHTML表に変換してOutlookメールで送信する」サンプルをまとめました。
Excelのセル範囲をコピーしてHTML形式に変換し、メール本文に埋め込む方法です。
サンプルコード:Excel範囲をHTML表に変換して送信
Sub SendRangeAsHtml()
Dim outlookApp As Object, mailItem As Object
Dim rng As Range
Dim fso As Object, ts As Object
Dim tempFile As String, htmlBody As String
' 送信する範囲を指定(例:Sheet1のA1:C10)
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:C10")
' 一時HTMLファイルを作成
tempFile = Environ("TEMP") & "\temp.htm"
rng.Copy
' 新しいワークブックに貼り付けてHTML保存
With Workbooks.Add
.Sheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
.SaveAs Filename:=tempFile, FileFormat:=xlHtml
.Close False
End With
' HTMLファイルを読み込み
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(tempFile, 1)
htmlBody = ts.ReadAll
ts.Close
' Outlookメール作成
Set outlookApp = CreateObject("Outlook.Application")
Set mailItem = outlookApp.CreateItem(0)
With mailItem
.To = "user@company.com"
.Subject = "Excel範囲をHTML表で送信"
.HTMLBody = "<p>以下がExcel範囲の内容です。</p>" & htmlBody
.Display ' 確認後送信、即送信なら .Send
End With
' 一時ファイル削除
Kill tempFile
End Sub
VB✅ 処理の流れ
- 指定範囲をコピー(例:
A1:C10) - 新規ブックに貼り付け → HTML形式で保存
- HTMLファイルを読み込み → 本文に挿入
- Outlookでメール作成・送信
- 一時ファイルを削除
💡 応用ポイント
- 範囲を動的に指定する場合は
UsedRangeやCurrentRegionを利用 - HTML本文の前後に説明文やリンクを追加可能
- 書式(色・罫線・フォント)もそのまま反映されるため、レポート送信に便利
👉 この方法を使えば、Excelの表をそのままメール本文に埋め込んで送信できるので、添付ファイル不要で見やすいレポート配信が可能です。

