Excel のセル範囲をOutlook 経由でメール送信するには、どうすればよいですか?
日常業務でExcel を使っていると、レポート作成後に特定の相手とデータの一部だけを共有したい場面がよくあります。たとえば、ワークブック全体ではなく、「範囲を選択してください」で指定したセル範囲に含まれる重要な情報のみを送信し、機密性と関連性を確保したい場合です。多くのユーザーは、手動でOutlook に切り替えたり、内容をコピーアンドペーストしたりする手間を省きたいと考えています。では、Excel から直接、指定したセル範囲をメールで送信できる実用的で効率的な方法はあるのでしょうか?
本チュートリアルでは、Outlook を使って選択したセルを送信するためのさまざまな方法(VBA ソリューションやExcel の組み込み機能を含む)をご紹介します。これにより、作業効率が向上し、手作業による負担を軽減できます。具体的には、セル範囲を添付ファイルとして送信する方法、メール本文にセルを直接埋め込む方法、送信前にセル範囲を画像または PDF として保存する方法、そして従来のExcel メール機能を利用する方法を詳しく解説します。さらに、重要なセットアップ手順やシナリオ別の活用法、トラブルシューティングのヒント、最適な結果を得るための実践的なアドバイスもお届けします。
VBA コードでExcel からセル範囲を添付ファイルとして送信する
VBA コードでExcel からセル範囲をメール本文として送信する
その他のExcel の組み込み機能 – 「メールの受信者に送信」機能を使用して選択セルを本文として送信する
VBA コードでExcel からセル範囲を添付ファイルとして送信する
ワークブック全体へのアクセスを許可せずに特定のデータセットのみを共有したい場合は、指定したセル範囲を抽出し、。xlsx または .xls 形式のファイルとして添付し、Outlook 経由で送信できます。この方法は、受信者がレポートの一部のみを確認すればよい場合や、機密性が特に重要な場面で特に効果的です。以下の手順で、このプロセスを自動化する VBA コードのセットアップと使用方法を説明します。
1.対象のExcel ワークブックを開き、「ALT + F11」キーを押してMicrosoft Visual Basic for Applications ウィンドウを起動し、VBA コードを挿入・編集します。
2.「挿入」→「モジュール」をクリックして新しいモジュールを作成し、以下のスクリプトをモジュールウィンドウに貼り付けます。
VBA コード:Excel からセル範囲を添付ファイルとして送信する
Sub SendRange()
'Update 20131209
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "skyyang@extendoffice.com"
.CC = ""
.BCC = ""
.Subject = "information of kte"
.Body = "hello, please check and read this document. "
.Attachments.Add Wb2.FullName
.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub ヒントとカスタマイズ:
- 「To」
- 「CC」「BCC」
- 「Subject」「Body」
3.「F5」キーを押してコードを実行すると、メールで送信したい範囲を選択するプロンプトが表示されます(送信前にデータを確認することをお勧めします)。例としてスクリーンショットをご参照ください。

4.「OK」をクリックすると、進捗プロンプトや許可通知が表示される場合があります。処理が完了したら、「許可」をクリックしてください。指定したセル範囲が、Excel ファイル添付として選択した受信者に送信されます。

注意点とトラブルシューティング:
- Outlook が既定のメールプログラムとしてインストールされていない場合や実行されていない場合は、コードが正しく実行されない可能性があります。
- マクロのセキュリティ設定で VBA スクリプトの実行が許可されていることを確認してください。マクロを有効にするか、トラストセンターの設定を調整する必要がある場合があります。
- 添付ファイルの種類が次のものと一致するは、ソースのファイルの種類および VBA コード内で指定された行に依存します。
- 送信後は、Outlook の送信済みアイテムを確認して配信を確定してください。
この方法は、安全なデータ共有や記録のアーカイブ、および元のExcel 書式を保持する必要がある場面に最適です。ただし、受信者は添付ファイルを開くための適切なソフトウェアが必要となります。
VBA コードでExcel からセル範囲をメール本文として送信する
添付ファイルをダウンロードせずにすぐに情報を閲覧してもらいたい場合(たとえば、定期的なレポートサマリーや進捗状況の更新など)は、選択したセル範囲をメール本文に直接埋め込むことができます。これにより、受信者の利便性が高まり、情報がより読みやすく、処理もスピーディーになります。
1.データを含むワークシートに切り替え、「ALT + F11」キーを押して、Microsoft Visual Basic for Applications ウィンドウを開きます。
2.「挿入」>「モジュール」をクリックして、モジュールウィンドウを開き、以下のコードを貼り付けます。
VBA コード:Excel からセル範囲を本文として送信する
Sub EmailRange()
'Update by Extendoffice
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
WorkRng.Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
.Introduction = "Please read this email."
.Item.To = "skyyang@extendoffice.com"
.Item.Subject = "information of kte"
.Item.Send
End With
Application.ScreenUpdating = True
End Sub パラメーターの説明と実用的な調整:
- 「Introduction」
- 「Item.To」
- 「Item.Subject」
3.「F5」キーを押してマクロを実行し、送信したいセル範囲を選択してください。

4。 選択内容を確認し、「OK」をクリックします。セキュリティプロンプトが表示された場合は注意深く対応し、処理が完了したら「許可」をクリックしてマクロを承認してください。その後、範囲を選択すると、Outlook メールの本文にテーブル形式で直接表示されます。

重要なポイント:
- このソリューションを使用するには、Outlook がインストールされており、かつ既定のメールプログラムとして設定されている必要があります。
- VBA を正常に実行するには、Excel でマクロを有効にしてください。エラーが発生した場合は、トラストセンターのマクロ設定を確認してください。
- 書式は保持されますが、複雑なセルの書式はExcel 内とメール内で表示が異なる場合があります。
- メッセージが送信されたことを確認するには、Outlook の送信済みアイテムまたは送信トレイをご確認ください。
この方法は、チームのステータス更新、迅速なデータ共有、または即時読込を好む同僚やクライアントへの主要指標の配布などに適しています。
その他のExcel の組み込み機能 – 「メールの受信者に送信」機能を使用して選択セルを本文として送信する
Office 365 より前の古いExcel バージョンには、「メールの受信者に送信」という組み込みボタンが含まれており、VBA を使わずに選択セルをメール本文として簡単に送信できました。この機能は最新版のExcel では既定で非表示になっていますが、クイックアクセスツールバーをカスタマイズすることで引き続き利用可能です。このソリューションは、旧バージョンのExcel をご利用の方やマクロを使用したくない方におすすめです。
有効化と使用方法:
- リボンの上部にあるクイックアクセスツールバーを右クリックし、「クイックアクセスツールバーのユーザー設定」を選択します。
- コマンド一覧から、「次のコマンドの選択:」を「すべてのコマンド」に変更してください。
- 下にスクロールして、「メールの受信者に送信」をクイックアクセスツールバーに追加しましょう。
- セットアップ後、送信したいセル範囲を選択して「メールの受信者に送信」アイコンをクリックすると、Excel がその選択範囲を本文に含んだ埋め込み型メールウィンドウを自動で開きます。あとは宛先や件名を入力して、すぐに送信できます!
重要な注意事項:
- この方法を使用するには、Outlook が既定のメールクライアントとして構成されている必要があります。
- 埋め込み型メールウィンドウでの操作は通常のOutlook 作成画面とは感覚が異なる場合がありますので、書式を再度確認してください。
- この機能は特定のExcel バージョン(特に新しい Office 365 ビルド)では無効または存在しない場合があります。そのような場合は、VBA や PDF/画像エクスポートによる代替手段をご検討ください。
メリットとデメリット:
- 対応バージョンでは非常に簡単かつ迅速に利用でき、コードや高度な設定は不要です。
- すべてのバージョンで利用できるわけではなく、新しいExcel をお使いのユーザーは代替手段が必要になる場合があります。
関連記事:
Excel からOutlook 経由でワークシートのみを送信する方法は?
Excel からOutlook 経由で現在のブックを送信する方法は?
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得