Excel VBA | Excelの範囲をそのままHTML表に変換してOutlookメールで送信する

VBA
スポンサーリンク

こちらに「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

✅ 処理の流れ

  1. 指定範囲をコピー(例:A1:C10
  2. 新規ブックに貼り付け → HTML形式で保存
  3. HTMLファイルを読み込み → 本文に挿入
  4. Outlookでメール作成・送信
  5. 一時ファイルを削除

💡 応用ポイント

  • 範囲を動的に指定する場合は UsedRangeCurrentRegion を利用
  • HTML本文の前後に説明文やリンクを追加可能
  • 書式(色・罫線・フォント)もそのまま反映されるため、レポート送信に便利

👉 この方法を使えば、Excelの表をそのままメール本文に埋め込んで送信できるので、添付ファイル不要で見やすいレポート配信が可能です。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました