Excel チュートリアル – Excel からメールを送信する方法
通常、メールはOutlook や Gmail などのメールクライアントを使って送信します。しかし、多くのユーザーがデータをExcel ワークブックに保存しており、作業中にその一部を他の人と共有する必要があるため、メールクライアントをわざわざ操作せずにExcel ワークブックから直接メールを送信したいと考えています。このステップバイステップのチュートリアルでは、さまざまな条件のもとでExcel からメールを送信する方法をわかりやすく解説します。
注:以下の方法を適用する前に、コンピューターに Outlook メールクライアントを設定し、既定のメールクライアントとして指定しておく必要があります。
目次:[ 非表示 ]
1.Excel からメールを送信する基本
このセクションでは、Excel からメールを送信する基本的な方法をご紹介します。
1.1 Excel の組み込み機能でメールを送信する
Excel からシンプルなメール(宛先、件名、Cc、本文のみ)を送信したい場合は、Excel の組み込み機能をご利用いただけます。
下記の表に示すとおり、指定されたフィールドに基づいてExcel から異なるメールを送信するには、各フィールドのセル参照を使ってハイパーリンク数式を作成します。メール用のハイパーリンクを作成すれば、必要なリンクをクリックするだけで自動的にメールが送信されます。
注:「To」または「Cc」フィールドに複数の受信者を指定する場合は、セミコロン(;)で区切ってください。

このセクションでは、ハイパーリンク数式にメールアドレス、Cc の宛先、件名、本文をそれぞれ追加する方法を4 つのパートに分けてご紹介します。以下の手順に従って、ぜひお試しください。
「HYPERLINK」関数の構文と引数は次のとおりです。
構文
HYPERLINK(link_location, [friendly_name])
引数
1.1.1.1 ハイパーリンク数式にメールアドレスを追加する
ここでは、メールの受信者を追加するために数式内で「mailto:」を使用します。この例では、最初の受信者のメールアドレスがセル B2 にあるため、「mailto:」を付けてセル B2 を参照します。
“mailto:”&B2
1.ハイパーリンクを表示するセル(ここではセル F2)を選択します。
2.次に、以下の数式を入力してください。
=HYPERLINK("mailto:"&B2) 
注:「Enter」キーを押すと、以下のスクリーンショットのようにハイパーリンクが作成されます。このリンクをクリックすると、Outlook のメール作成画面が開き、受信者のメールアドレスが自動的に「To」フィールドに入力されます。

これで受信者のメールアドレスがハイパーリンク数式に追加されました。引き続き、必要に応じて件名や Cc の宛先、本文を入力してください。
1.1.1.2 ハイパーリンク数式に Cc の受信者を追加する
ハイパーリンク関数に Cc の受信者を追加するには、数式内に「?cc=」を以下のように挿入します。
セル F2 の数式は次のようになります:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2) 
ハイパーリンク関数に件名を追加するには、数式の一部として「&subject=」を以下のように挿入します。
セル F2 の数式は次のようになります:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2) 
1.1.1.4 改行を含む本文をハイパーリンク数式に追加する
最後のステップとして、ハイパーリンク数式に本文を追加します。例では、セル E2 に2 行のテキストが改行で区切られており、メール本文でもその改行を維持したいとします。このような場合、Outlook は改行を正しく認識するでしょうか?実際に確認してみましょう。
ハイパーリンク数式に本文を追加するには、「&body=」を数式の一部として以下のように挿入する必要があります。
セル F2 の数式は次のようになります:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2) 
注:「Enter」キーを押すかリンクをクリックすると、新規メールの本文が1 行で表示されていることが確認できます。

メール本文を複数行で表示するには、改行を入れたい位置にキャリッジリターンの文字コード「%0A」を挿入し、セルの内容を修正してください。下記のスクリーンショットをご参照ください:

上記の手順により、メールフィールドを含む Link_location 引数の作成が完了しました。このセクションでは、次の引数[friendly_name]を完成させます。
ここでは、ハイパーリンク付きのセルに「Email to xx」というテキストを表示したいとします(xx はセル A2 の受信者名)。その場合、セル F2 の数式は次のように変更します:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2) 「Enter」キーを押すと、結果が表示されます。

この数式セルを選択し、「オートフィルハンドル」を下方向にドラッグして、他のメール用のハイパーリンクを一括作成しましょう。下記のスクリーンショットをご参照ください:

1.1.2 ハイパーリンク機能を使用してExcel からメールを送信する
上記のハイパーリンク数式を使う以外にも、Excel の「ハイパーリンクの作成」機能でメール用ハイパーリンクを手動で作成できます。このセクションでは、その手順を詳しくご説明します。
1.ハイパーリンクを挿入したいセルを右クリックし、「リンク」を右クリックメニューから選択します。

2.表示される「ハイパーリンクの作成」ダイアログボックスで、次のように設定してください。

ハイパーリンクをクリックすると、下記のスクリーンショットのように、指定された「To」、件名、本文が含まれたOutlook メールが作成されます。

注:
1.2 VBA スクリプトでセル内の複数の受信者にメールを送信する
上記の例では、複数のメールアドレスが1 つのセル内にセミコロン区切りで表示されています。以下のスクリーンショットのようにメールアドレスの一覧があり、それら全員に1 通のメールまたは個別のメールを送信したい場合、次の VBA コードが役立ちます。

1.2.1 VBA スクリプトでセル内の複数の受信者に1 通のメールを送信する
1.メールを送信したいすべてのメールアドレスを含むワークシートで、「Alt」+「F11」キーを押して「Microsoft Visual Basic for Applications」ウィンドウを開きます。
2.「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「モジュール」をクリックし、次のコードを「モジュール(コード)」ウィンドウに貼り付けてください。

VBA コード:メールアドレスの一覧にメールを送信する
Sub sendmultiple()
'updateby Extendoffice 20220802
Dim xOTApp As Object
Dim xMItem As Object
Dim xCell As Range
Dim xRg As Range
Dim xEmailAddr As String
Dim xTxt As String
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xOTApp = CreateObject("Outlook.Application")
For Each xCell In xRg
If xCell.Value Like "*@*" Then
If xEmailAddr = "" Then
xEmailAddr = xCell.Value
Else
xEmailAddr = xEmailAddr & ";" & xCell.Value
End If
End If
Next
Set xMItem = xOTApp.CreateItem(0)
With xMItem
.To = xEmailAddr
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
End With
End Sub 3.「F5」キーを押してコードを実行すると、「Kutools for Excel」のダイアログボックスが表示されます。メールアドレスの一覧を選択して「OK」をクリックしてください。

注:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel" コードを実行すると、「範囲を選択してください」内のすべてのメールアドレスがメッセージウィンドウの「To」フィールドに表示されます。下記のスクリーンショットをご参照ください。

1.2.2 VBA スクリプトでセルにリストされた各受信者に個別にメールを送信する
上記のコードは、「範囲を選択してください」内のすべてのメールアドレスをメッセージウィンドウの「To」フィールドに追加します。各メールアドレス宛てに個別にメールを送信し、他の受信者のメールアドレスが互いに見えないようにしたい場合は、以下の VBA スクリプトをお試しください。
1.メールを送信したいすべてのメールアドレスを含むワークシートで、「Alt」+「F11」キーを押して「Microsoft Visual Basic for Applications」ウィンドウを開きます。
2.「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「モジュール」をクリックし、次のコードをモジュール(コード)ウィンドウに貼り付けてください。
VBA コード:セル内の各メールアドレスリストに個別にメールを送信する
Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
Dim xRg As Range
Dim xRgEach As Range
Dim xRgVal As String
Dim xAddress As String
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
For Each xRgEach In xRg
xRgVal = xRgEach.Value
If xRgVal Like "?*@?*.?*" Then
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.To = xRgVal
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
'.Send
End With
End If
Next
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub 3.次に、「ツール」>「参照設定」をクリックします。「参照設定 – VBAProject」ダイアログボックスで、「Microsoft Outlook 16.0 オブジェクト ライブラリ」を探してチェックし、「OK」をクリックして変更を保存します。

4.「F5」キーを押してコードを実行すると、「Kutools for Excel」のダイアログボックスが表示されます。メールアドレスの一覧を選択して「OK」をクリックしてください。

注:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel" この例では、選択した範囲内に6 つのメールアドレスがあるため、以下のスクリーンショットのように、それぞれのメールアドレス宛てに「To」フィールドが自動的に入力された6 つのOutlook メッセージウィンドウが作成されます。

5.最後に、「送信」ボタンをクリックして、メールを1 通ずつ送信します。
2.Excel から送信されるメールに添付ファイルの挿入またはOutlook の署名を追加する(VBA スクリプト使用時)
このセクションでは、Excel から送信するメールに添付ファイルを挿入したり、Outlook の既定の署名を追加したりする方法をご紹介します。
2.1 Excel から送信されるメールに添付ファイルの挿入を追加する
ここでは添付ファイルを挿入するさまざまなケースをご紹介します。必要に応じて、最適な方法をお選びください。このセクションでは、以下のリンクをクリックして該当の手順にすぐ移動できます:
Excel からフォルダー内の1 つまたは複数のファイルを添付ファイルとしてメールで送信するには、次の VBA コードをご利用いただけます。
1。「Alt」キーと「F11」キーを同時に押します。
2。開いた「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「標準モジュール」をクリックし、表示された「モジュール(コード)」ウィンドウに以下の VBA コードを貼り付けてください。
VBA コード:Excel からフォルダー内のファイルを添付ファイルとしてメール送信する
Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
Dim xStrFile As String
Dim xFilePath As String
Dim xFileDlg As FileDialog
Dim xFileDlgItem As Variant
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
If xFileDlg.Show = -1 Then
With xMailOut
.BodyFormat = olFormatRichText
.To = "xxx@aaa.com"
.Subject = "test"
.HTMLBody = "test"
For Each xFileDlgItem In xFileDlg.SelectedItems
.Attachments.Add xFileDlgItem
Next xFileDlgItem
.Display
End With
End If
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub 注:
3。次に、「ツール」>「参照設定」をクリックします。「参照設定 – VBAProject」ダイアログボックスで、「Microsoft Outlook 16.0 オブジェクト ライブラリ」のチェックボックスをオンにして、「OK」をクリックし、変更を保存します。

4。「F5」キーを押してコードを実行すると、「参照」ウィンドウが表示されます。メールに添付したいファイルを選択し、「OK」をクリックしてください。

その後、メッセージウィンドウが表示され、選択したファイルが「添付ファイル」欄に添付として表示されていることを確認できます。

2.1.2 現在のワークシートを添付ファイルとしてメール送信する
Excel で現在のワークシートを添付ファイルとしてメール送信したい場合は、このセクションの VBA スクリプトをご利用いただけます。
1。「Alt」+「F11」キーを押してください。
2。開いた「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「標準モジュール」をクリックし、表示された「モジュール(コード)」ウィンドウに以下の VBA コードを貼り付けてください。
VBA コード:現在のワークシートを添付ファイルとしてメール送信する
Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.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 = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte features"
.Body = "Please check and read this document."
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub 注:
3。「F5」キーを押してコードを実行すると、現在のワークシートがExcel ワークブックとして保存され、自動的にメッセージウィンドウに添付ファイルとして挿入されます。スクリーンショットをご確認ください:

注:現在のワークシートのみを含む添付されたブックは、元のブックと同じ名前となり、さらにコード実行時刻がブック名に追加されます。
Excel で現在のワークシートを添付ファイルとしてメール送信する VBA コードを学んだ後、ここではワークブック全体を添付ファイルとしてメール送信できる別の VBA スクリプトをご紹介します。以下の手順に従ってください。
1。「Alt」+「F11」キーを押してください。
2。開いた「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「標準モジュール」をクリックし、表示されたモジュール(コード)ウィンドウに以下の VBA コードを貼り付けてください。
VBA コード:Excel から現在のブックを添付ファイルとしてメール送信する
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 注:
3。「F5」キーを押してコードを実行すると、現在のブックが自動的にメッセージウィンドウの添付ファイルとして挿入されます。スクリーンショットをご確認ください:

2.1.4 ワークブック全体を PDF 添付ファイルとしてメール送信する
多くの場合、ユーザーはExcel ワークブックを PDF ファイルとして保存し、それを添付ファイルとして他者に送信しています。このセクションでは、ワークブックを手動で PDF として保存することなく、現在開いているワークブックをExcel から直接 PDF 添付ファイルとしてメール送信する方法をご紹介します。
1。「Alt」+「F11」キーを押してください。
2。開いた「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「標準モジュール」をクリックし、表示されたモジュール(コード)ウィンドウに以下の VBA コードを貼り付けてください。
VBA コード:ワークブック全体を PDF 添付ファイルとしてメール送信する
Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName
Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FilePath
.Display 'or use .Send
End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub 注:
3。「F5」キーを押してコードを実行すると、現在のブックが PDF ファイルとして自動的に新しいメッセージウィンドウに添付されます。スクリーンショットをご覧ください:

2.1.5 現在のワークシートを PDF 添付ファイルとしてメール送信する
たとえば、「Monthly sales」という名前のブックに「sales report」というワークシートがあり、そこに売上レポート表を作成し終えたとします。このワークシートを PDF ファイルとして同僚に送信したい場合、以下の VBA コードが役立ちます。
1。「Alt」+「F11」キーを押してください。
2。開いた「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「標準モジュール」をクリックし、表示された「モジュール(コード)」ウィンドウに以下の VBA コードを貼り付けます。
VBA コード:現在のワークシートを PDF 添付ファイルとしてメール送信する
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 注:
3。「F5」キーを押してコードを実行すると、現在のワークシートが PDF ファイルとして自動的に新しいメッセージウィンドウに添付されます。スクリーンショットをご覧ください:

2.2 Excel から送信されるメールにOutlook の署名を挿入する
上記の例を引き続き用いると、Excel から現在のワークシートを PDF ファイルとして添付して送信するために上記の VBA コードを利用できますが、メッセージウィンドウに Outlook の署名を追加することはできません。Excel から送信するメールに Outlook の既定の署名をそのまま保持したい場合は、以下の方法が役立ちます。
以下に2 つの VBA コードを示します。
VBA コード1:このコードは、Outlook の署名を保持するのに役立ちます。
VBA コード2:このコードを使えば、現在のワークシートを PDF 添付ファイルとしてメールで送信できます。
VBA コード1:Outlook の署名を保持する
.HTMLBody = "Email body" & "
" & .HTMLBody VBA コード2:現在のワークシートを PDF 添付ファイルとしてメール送信する
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 1。通常、「Alt」キーと「F11」キーを押すと、「Microsoft Visual Basic for Applications」ウィンドウが開きます。
2. 「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「標準モジュール」をクリックし、表示された「モジュール(コード)」ウィンドウに上記の VBA コード2 を貼り付けます。
3。Excel から送信されるメールにOutlook の既定の署名を保持するには、次のように VBA コード2 を変更する必要があります:

以下が変更後の完全なコードです。
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Display
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.HTMLBody = "Email body" & "
" & .HTMLBody
.Attachments.Add FileName
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 4。「F5」キーを押してコードを実行すると、現在のワークシートが PDF ファイルとして添付された新しいメッセージウィンドウが開き、Outlook の既定の署名がメール本文の末尾に自動的に挿入されます。

3 特定の条件が満たされたときにExcel から自動的にメールを送信する(VBA スクリプト使用)
上記の例では、メール送信のためにコードを手動で実行する必要があります。しかし、特定のセルの値が一定以上になったとき、セルの値が変更されたとき、あるいは指定した日付に到達したときなど、特定の条件が満たされたタイミングで自動的にコードをトリガーし、メールを送信したいケースも少なくありません。このセクションでは、Google でExcel ユーザーがよく検索する代表的な条件をリストアップし、その条件が満たされた際にExcel から自動でメールを送信する方法をご紹介します。
3.1 セルの値が特定の数値に達したときに自動的にメールを送信する
以下のスクリーンショットのように、セル D6 に売上合計が含まれる売上表があるとします。売上合計が10,000 を超えた場合に自動的に上司へメールを送信し、10,000 以下であれば何も実行しないようにするには、次のように設定します。

1。売上表を含むワークシートのシートタブを右クリックし、コンテキストメニューから「コードの表示」を選択してください。

2。開いた「Microsoft Visual Basic for Applications」ウィンドウで、以下の VBA コードを「シート(コード)」ウィンドウに貼り付けてください。

VBA コード:Excel でセルの値が特定の数値に達したときに自動的にメールを送信する
Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub 注:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6") 今後、セル D6 の値が10,000 を超えると、以下のスクリーンショットのようにメールが自動で作成されます。

3.2 セルの値が変更されたときに自動的にメールを送信する
以下のスクリーンショットのように、各月の売上が異なるワークシートに記録され、別のワークシートに売上合計がまとめられたブックを受け取ったとします。この売上合計を検証し、値が変更されていた場合には、送信者にブックを返送してセルが変更されたことを知らせる必要があります。

1。売上表を含むワークシートのシートタブを右クリックし、コンテキストメニューから「コードの表示」を選択してください。

2。開いた「Microsoft Visual Basic for Applications」ウィンドウで、以下の VBA コードを「シート(コード)」ウィンドウに貼り付けてください。
VBA コード:指定されたセルの値が変更されたときに自動的にメールを送信する
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")
Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If
ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub 注:コード内では、
今後、セル B14 の値が変更されると、以下のスクリーンショットのようにOutlook メッセージが自動的に作成されます。

3.3 ブックが保存されたときに自動的にメールを送信する
修正後に他者と共有する必要のあるブックがある場合、通常はブックを保存し、メールクライアントを起動して、そのブックを添付した新規メールを作成し、宛先などのフィールドに入力して送信する必要があります。このセクションでは、ブックを保存するたびに自動的にメールを作成する方法をご紹介します。以下の手順に従ってください。
1。「Alt」キーと「F11」キーを押して、「Microsoft Visual Basic for Applications」ウィンドウを開きましょう。
2。このウィンドウで、「プロジェクト」ペインの「ThisWorkbook」をダブルクリックし、以下の VBA コードを「ThisWorkbook(コード)」ウィンドウに貼り付けてください。

VBA コード:ブックが保存されたときに自動的にメールを送信する
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
Dim xOutApp As Object
Dim xMailItem As Object
Dim xName As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "The workbook has been updated"
.Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
.Attachments.Add xName
.Display
'.send
End With
Set xMailItem = Nothing
Set xOutApp = Nothing
End Sub 注:コード内では、
3。今後、「Ctrl」+「S」キーを押すか「保存」ボタンをクリックしてブックを保存すると、Outlook メールが自動的に作成されます。現在のブックが添付ファイルとして添付され、あらかじめ指定されたフィールドの内容が自動的に入力されていることをご確認いただけます。スクリーンショットをご覧ください:

ヒント:このブックを頻繁に使用する場合は、今後のために VBA スクリプトを保存できるよう、「Excel マクロ有効ブック」として保存することをおすすめします。手順は以下の通りです。

3.4 指定時刻に自動的にメールを送信する
たとえば、毎週金曜日の午前9 時にタスク割り当て用のワークブックを誰かにメールで送信する必要があり、メールクライアントを手動で操作せずにExcel でこの作業を自動化したいとお考えの方もいらっしゃるでしょう。このセクションでは、その実現方法をご紹介します。
1。「Alt」+「F11」キーを押して、「Microsoft Visual Basic for Applications」ウィンドウを開きましょう。
2。「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「標準モジュール」を順にクリックし、表示されたモジュールウィンドウに以下の VBA コードを貼り付けてください。

VBA コード1:Excel から現在のブックを添付ファイルとしてメール送信する
Sub Timer()
If Weekday(Date) = vbFriday Then
SendWorkBook
Application.OnTime TimeValue("09:00:00"), "Timer"
Else
Application.OnTime TimeValue("09:00:00"), "Timer"
End If
End Sub
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 3。このウィンドウで、「プロジェクト」ペインにある「ThisWorkbook」をダブルクリックし、表示される「ThisWorkbook (コード)」ウィンドウに以下の VBA コードを貼り付けてください。

VBA コード2:指定時刻に自動的にメールを送信する
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub 注:
4。コードを保存した後、以下の手順でワークブックをExcel マクロ有効ブックとして保存してください。

5。保存したマクロ有効ブックを開くと、指定された日時になると自動的にメールが作成・送信されます。
4。その他のトピック
このセクションでは、Excel からメールを送信する際に遭遇する可能性のあるその他のトピックをご紹介します。
4.1 Excel からセル範囲をメール送信する(VBA スクリプト使用)
下のスクリーンショットのように、Excel ワークシート内に月次売上表があり、この売上表をメール本文に挿入するか、直接添付ファイルとして他者に送信したいとします。ここでは、その実現に役立つ2 つの方法をご紹介します。

4.1.1 Excel からセル範囲をメール本文の一部として送信する
次の VBA コードを実行すれば、Excel のセル範囲をメール本文にそのまま挿入して送信できます。
1。「Alt」+「F11」キーを押して、「Microsoft Visual Basic for Applications」ウィンドウを開きましょう。
2. 「Microsoft Visual Basic for Applications」ウィンドウで、「ツール」>「参照設定」をクリックします。表示された「参照設定 – VBAProject」ダイアログボックスで、「Microsoft Outlook 16.0 オブジェクト ライブラリリ」のチェックボックスをオンにして、「OK」をクリックします。

3。「挿入」>「標準モジュール」をクリックし、表示される「モジュール(コード)」ウィンドウに、以下の VBA コードを貼り付けてください。
VBA コード:Excel からセル範囲をメール本文の一部として送信する
Sub SendARangeofCells()
'Updated by Extendoffice 20220809
Dim xRg As Range
Dim I, J As Long
Dim xAddress As String
Dim xMailOut As Object
Dim xOutApp As Object
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.Subject = "test"
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = RangetoHTML(xRg)
.Display
'.Send
End With
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
' The following VBA script is cited from this page:
' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function 注:コード内では、
4。「F5」キーを押してコードを実行します。表示される「Kutools for Excel」ダイアログボックスで、メール本文として送信したいセル範囲を選択し、「OK」をクリックしてください。スクリーンショットをご参照ください:

すると、Outlook メールが自動的に作成されます。ワークシートで選択したセル範囲がメール本文に挿入されていることをご確認ください。スクリーンショットをご覧ください:

4.1.2 Excel からセル範囲を添付ファイルとしてメール送信する
ワークシート内のセル範囲をExcel から添付ファイルとしてメールで送信したい場合は、以下の VBA コードをお試しください。
1。「Alt」+「F11」キーを押してください。
2。開いた「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「標準モジュール」をクリックし、表示される「モジュール(コード)」ウィンドウに以下の VBA コードを貼り付けてください。
VBA コード:Excel からセル範囲を添付ファイルとしてメール送信する
Sub SendRange()
'Update 20220809
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 = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Monthly sales for 2021"
.Body = "Hello, please check and read this document. "
.Attachments.Add Wb2.FullName
.Display
'.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 注:
3。「F5」キーを押してコードを実行します。表示される「Kutools for Excel」ダイアログボックスで、メールの添付ファイルとして送信したいセル範囲を選択し、「OK」をクリックしてください。スクリーンショットをご参照ください:

すると、Outlook メールが自動的に作成されます。ワークシートで選択したセル範囲はExcel ワークブックとして保存され、メッセージウィンドウに添付されます。スクリーンショットをご確認ください:

4.2 Excel でボタンをクリックしたときにメールを送信する
Excel からメール送信するマクロをコマンドボタンのクリックでトリガーしたい場合(たとえば、ワークシート上のコマンドボタンをクリックして現在のブックを添付ファイルとして他者に送信するなど)は、以下の手順に従って設定してください。
1。「開発」>「挿入」>「コマンドボタン(ActiveX コントロール)」をクリックし、ワークシート上にコマンドボタンを描画します。
ヒント:すでにコマンドボタンがある場合は、この手順をスキップしてください。

2。「Alt」+「F11」キーを押して「Microsoft Visual Basic for Applications」ウィンドウを開き、「挿入」>「標準モジュール」をクリックします。そして、Excel から現在のブックを添付ファイルとしてメール送信するための VBA コードを、「モジュール(コード)」ウィンドウに貼り付けてください。

注:手順2 で作成したマクロの名前は「SendWorkbook」としています。
3。「Alt」+「Q」キーを押して「Microsoft Visual Basic for Applications」ウィンドウを閉じます。
4。次に、コマンドボタンにマクロを割り当てる必要があります。コマンドボタンを右クリックし、「コードの表示」をコンテキストメニューから選択してください。

5。すると、「Microsoft Visual Basic for Applications」ウィンドウが表示され、「シート(コード)」ウィンドウに以下の2 行が表示されていることを確認できます。
Private Sub CommandButton1_Click()
End Sub 
6。コマンドボタンのサブプロシージャ内に、既存のマクロ名を入力してください。

7。「Alt」+「Q」キーを押して「Visual Basic エディター」を閉じ、[開発]タブの[デザインモード]をクリックしてデザインモードをオフにします。

これで、コマンドボタンをクリックすると、現在のブックがメールに添付されて送信されます。
4.3 特定のメールアカウントからメールを送信する
通常、VBA コードでExcel からメールを送信すると、送信者アカウントはOutlook のデフォルトアカウントが使用されます。Outlook に複数のメールアカウントを設定していて、デフォルト以外の特定のアカウントを使ってExcel からメールを送信したい場合は、以下の VBA コードが役立ちます。
このようなケースでは、以下のコードが必要となります。
VBA コード1:
Dim OutlookMail As Outlook.MailItem VBA コード2:
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next 上記の VBA コードの使用方法
この例では、Excel から現在のブックを添付ファイルとして送信する際に特定のメールアカウントを指定します。以下の手順に従ってください。
1。「Alt」+「F11」キーを押して、「Microsoft Visual Basic for Applications」ウィンドウを開きます。「ツール」>「参照設定」をクリックし、「参照設定 – VBAProject」ダイアログボックスで「Microsoft Outlook 16.0 オブジェクトライブラリ」のチェックボックスをオンにして、「OK」をクリックします。

2。「挿入」>「標準モジュール」をクリックし、表示される「モジュール(コード)」ウィンドウに以下の VBA コードを貼り付けます。
VBA コード:Excel から指定したOutlook アカウント経由で現在のブックをメール添付ファイルとして送信する
Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 3。「F5」キーを押してコードを実行すると、Outlook のメールメッセージが表示され、「差出人」フィールドにコード内で指定したメールアカウントが自動的に入力されていることを確認できます。
4.4 日付到達時にメールを送信する
特定の期限日に基づいてメールを送信する必要があるケースを想定してください。たとえば、下のスクリーンショットのようなプロジェクト表があり、「範囲 E2:E7 の期限日が本日から7 日以内(現在の日付を2022 年8 月4 日と仮定)」の場合、対応するプロジェクトリーダーに自動的にメールが送信され、プロジェクトの期限が近づいていることをお知らせします。

1。プロジェクト表を含むワークシートのシートタブを右クリックし、コンテキストメニューから「コードの表示」を選択してください。

2。開いた「Microsoft Visual Basic for Applications」ウィンドウで、以下の VBA コードを「Sheet (Code)」ウィンドウに貼り付けてください。
VBA コード:期限日の条件が満たされた際に自動的にメールを送信する
Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "
"
xMailBody = ""
xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub 注:コード内では、
3。「F5」キーを押してコードを実行します。その後、期限日が条件に一致する場合、対応するメールが作成されます。この例では、下のスクリーンショットのように2 通のメールが作成されます。

5。Excel から簡単にメールを送信できる便利なツール
VBA 初心者の方には、上記の方法は少し扱いづらいと感じられるかもしれません。そんな方には、「Kutools for Excel」がおすすめです。メール送信機能をおすすめします!この機能を使えば、わずか数回のクリックでExcel から簡単にメールを送信できます。以下の手順に従ってください。
5.1 必要なメールフィールドを含むメールリストを簡単に作成できます
「メール送信」機能を使う前に、必要なメールフィールドを含んだメーリングリストを作成する必要があります。ここで、メーリングリスト作成機能が大いに役立ちます。
1。「KUTOOLS PLUS」>「メーリングリストの作成」をクリックします。

2。開いた「メーリングリストの作成」ウィンドウで、以下のように設定します。

すると、下のスクリーンショットのようにサンプルのメールリストテーブルが作成されます。

3。次に、サンプル内の元のデータを自分のフィールドデータに置き換えましょう。

これでメールリストテーブルが完成しました。引き続き、「メール送信」機能を適用し、作成したフィールドに基づいてExcel からメールを送信してください。
Kutools for Excel— 300 以上の必須ツールでExcel を強化し、作業をより迅速・簡単に。AI 機能を活用して、スマートなデータ処理と生産性の飛躍的な向上を実現します。今すぐ入手
5.2 作成したフィールドを含むメールを簡単に送信できます(メールリスト内)
必要なメールフィールドを含むメールリストを作成すると()方法についてはこちらをクリック)、これらのフィールドを使ってExcel からメールを送信できるようになります。
1。メールリスト全体を選択し、「KUTOOLS PLUS」>「Send Emails」をクリックします。

2。「Send Emails」ダイアログボックスで、以下の設定を完了してください。

3。その後、「Kutools for Excel」ダイアログボックスが表示され、送信されたメールの件数が通知されます。「OK」ボタンをクリックしてこのダイアログボックスを閉じてください。
ヒント:送信したメールは、Outlook の「送信済みアイテム」フォルダーでご確認いただけます。

5.3 HTML 本文(ハイパーリンクや画像など)付きのメールを簡単に送信
この「Send Emails」機能を使えば、ハイパーリンクや画像、多彩なフォントサイズ・フォント色などを盛り込んだ HTML メールを簡単に作成できます。
必要なメールフィールドを含むメールリストを作成した後、「Send Emails」ダイアログボックスを設定する際には、ツールバーのオプションを使って本文をリッチにできます。
下記のスクリーンショットをご参照ください:

5.4 メール送信時にOutlook の既定の署名を簡単に挿入
上記の方法では、Outlook の既定の署名付きでメールを送信する VBA コードをご紹介しましたが、「Send Emails」機能を使えば、オプションをチェックするだけで、Excel から送信するメールに自動的にOutlook の既定の署名が挿入されます。
必要なメールフィールドを含むメールリストを作成した後、「Send Emails」ダイアログボックスを設定する際は、「Options」>「Use Outlook’s signature settings」をクリックしてください。
注:「Outlook の署名設定を使用する」オプションにチェックマークが入っていることをご確認ください。

受信者は、メールを受け取った際に本文の末尾にOutlook の既定の署名が表示されていることを確認できます。
5.5 特定のメールアカウントから簡単にメールを送信
Excel からメールを送信する際に、デフォルトのアカウントではなく特定のメールアカウントを使いたい場合も、「Send Emails」機能で簡単に実現できます。
必要なメールフィールドを含むメールリストを作成した後、「Send Emails」ダイアログボックスの設定で、「Options」>「Sent from」をクリックし、メール送信に使用するメールアカウントを選択してください。
注:メールアカウントを選択すると、その前にチェックマークが表示されます。

「Send Emails」機能の詳細については、こちらをクリックしてください。
Kutools for Excel— 300 以上の必須ツールでExcel を強化し、作業をより迅速・簡単に。AI 機能を活用して、スマートなデータ処理と生産性の飛躍的な向上を実現します。今すぐ入手
以上のように、Excel からメールを送信する機能は日常業務において非常に役立ちます。本記事では、Excel からのメール送信に関する包括的なトピックをご紹介しました。他にもおすすめのトピックやさらに簡単な解決策があれば、ぜひコメント欄でお知らせください。
最高の 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 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得