メインコンテンツへスキップ

Excel チュートリアル – Excel からメールを送信する

通常、Outlook、Gmail などの電子メール クライアントを使用して電子メールを送信します。 しかし、多くの人はデータを Excel ブックに保存しており、作業中に一部のデータを他のユーザーに送信する必要があります。 そのため、Excel ワークブックから直接メールを送信する必要があり、メール クライアントを操作する時間を節約できます。 この段階的なチュートリアルでは、さまざまな条件下で Excel から電子メールを送信する方法を示します。

Note注: 次の方法を適用する前に、コンピューターで Outlook 電子メール クライアントを構成し、既定の電子メール クライアントとして設定する必要があります。

目次: [ 隠れる ]

(下または右側の目次の見出しをクリックすると、対応する章に移動します。)

1.Excelからのメール送信の基本

このセクションでは、Excel からメールを送信するための基本を紹介します。

1.1 Excel 組み込み関数を使用して Excel からメールを送信する

To、Subject、Cc、body フィールドのみを含む単純なメールを Excel から送信するだけの場合。 Excel の組み込み関数が役立ちます。


1.1.1 数式を含む Excel から電子メールを送信する

下の表に示すように、指定されたフィールドに基づいて Excel からさまざまな電子メールを送信するには、指定されたフィールドのセル参照を使用して、さまざまなハイパーリンク式を作成します。 電子メールのハイパーリンクを作成したら、必要なハイパーリンクをクリックして、電子メールを自動的に送信できます。

注: To または Cc フィールドに複数の受信者がいる場合は、セミコロンで区切ってください。

このセクションは XNUMX つの部分に分かれており、電子メール アドレス、Cc 受信者、件名、および本文テキストを個別にハイパーリンク式に追加する手順を示しています。 以下のようにしてください。

の構文と引数 ハイパーリンク 機能は次のとおりです。

構文

HYPERLINK(link_location, [friendly_name])

Arguments

リンク場所 (必須): 開くドキュメントへのパスとファイル名。
ヒント: このチュートリアルでは、受信者の電子メール アドレス、Cc 受信者、件名、本文など、電子メールに必要なすべてのフィールドを最初の引数 "link_location" に入力する必要があります。
分かりやすい名前 (オプション): セルに表示されるジャンプ値。

1.1.1.1 ハイパーリンク式に電子メール アドレスを追加する

ここでは使用します 「メールアドレス:」 メール受信者を追加する式の一部として。 この例では、最初の受信者の電子メール アドレスがセル B2 にあるため、「mailto:」を追加してセル B2 を参照する必要があります。

「mailto:」&B2

1. ハイパーリンクを表示するセルを選択します。 この場合、セル F2 を選択します。

2. 次に、次の式を入力します。

=HYPERLINK("mailto:"&B2)

Note: を押すと 入力します キーを押すと、下のスクリーンショットに示すようにハイパーリンクが作成されます。 リンクをクリックすると、Outlook メールが作成され、受信者のメール アドレスが [宛先] フィールドに自動的に入力されます。

受信者の電子メール アドレスがハイパーリンク式に追加されました。 次の手順に進み、必要に応じて件名、Cc 受信者、本文を追加してください。


1.1.1.2 Cc 受信者をハイパーリンク式に追加する

Cc 受信者をハイパーリンク機能に追加するには、追加してください "?cc=" 次の式の一部として。

"?cc=" & C2
ここで、C2 には cc 受信者の電子メール アドレスが含まれます。

セル F2 の数式は次のようになります。

=HYPERLINK("mailto:" & B2 & "?cc=" & C2)


1.1.1.3 ハイパーリンク式に件名を追加する

ハイパーリンク機能に件名を追加するには、追加してください "&subject=" 次の式の一部として。

"&subject="& D2
ここで、C2 には電子メールの件名が含まれます。

セル F2 の数式は次のようになります。

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)


1.1.1.4 改行を含む本文テキストをハイパーリンク式に追加する

最後の手順は、本文テキストをハイパーリンク式に追加することです。 例でわかるように、E2 の XNUMX 行のテキストは改行で区切られており、電子メール本文の改行を維持したいと考えています。 この場合、Outlook は改行を認識しますか? 確認してみましょう。

本文テキストをハイパーリンク式に追加するには、追加する必要があります 「&body=」 次の式の一部として。

"&body="& E2
ここで、E2 には電子メールの本文が含まれます。

セル F2 の数式は次のように表示されます。

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)

注: を押すと 入力します キーを押してリンクをクリックします。 新しいメールでは、メール本文の内容が同じ行に表示されていることがわかります。

メール本文を複数行に表示するには、改行文字コードを追加してセルの内容を変更する必要があります %0A 改行を挿入する必要があるテキストに。 スクリーンショットを参照してください:


1.1.1.5 ハイパーリンクに表示するテキストを指定する

上記の手順では、電子メール フィールドで Link_location 引数を完成させました。 このセクションでは、次の引数 [Friendly_name] を終了します。

この場合、ハイパーリンク セルにテキストを「xx にメールするここで、xx は A2 の受信者の名前です。 したがって、F2 の式は次のように変更する必要があります。

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)

入力します 結果を得るための鍵。

この数式セルを選択してドラッグします オートフィルハンドル をクリックして他の電子メール ハイパーリンクを作成します。 スクリーンショットを参照してください:


1.1.2 ハイパーリンク機能を使って Excel からメールを送信する

上記のハイパーリンク式を使用する場合を除き、電子メールのハイパーリンクを手動で作成できます。 インセット ハイパーリンク エクセルで機能します。 このセクションでは、手順を示します。

1. ハイパーリンクを挿入するメールを右クリックし、 リンク 右クリックメニューから。

2.ポップアップで ハイパーリンクを挿入 ダイアログボックスでは、次のように構成する必要があります。

2.1)選択 電子メールアドレス 左ペインに表示されます。
2.2) 表示するテキスト テキストボックスに、セルに表示するテキストを入力します。
ヒント注: このダイアログ ボックスではセル参照を使用できないため、次のように電子メール フィールドに手動で入力する必要があります。
2.3) E-mailアドレス テキスト ボックスに、次の電子メール アドレスを入力する必要があります。
mailto:メールアドレス
テキスト「」を置き換えてくださいメールアドレス」を実際のメールアドレスに置き換えます。 複数の電子メール アドレスをお持ちの場合は、セミコロンで区切ります。
2.4) 件名 テキストボックス、ここでメールの件名とメール本文を指定できます。 次のように構成してください。
メール件名&本文=メール本文
この場合、入力します Monthly sale&body=こんにちは、%0AEメール受信.
> 件名がマンスリー セールです。
&
> メール本文は次のとおりです。
こんにちは、
メール受信。 (%0A は、Outlook で認識できる復帰文字コードです)。
2.5)をクリックします OK ボタンをクリックしてハイパーリンクを保存します。 スクリーンショットを参照してください:

ハイパーリンクをクリックすると、下のスクリーンショットに示すように、指定された宛先、件名、および本文フィールドを含む Outlook メールが作成されます。

ノート:

1) この方法では、電子メールのハイパーリンクをそれぞれ手動で作成する必要がありました。
2) この方法では Cc フィールドをメールに追加できません。 そのため、Cc フィールドが必要な場合は、新しいオープニング メール ウィンドウから追加してください。

1.2 VBA スクリプトを使用してセル内の複数の受信者に電子メールを送信する

上記の例では、セミコロンで区切られた複数の電子メール アドレスがセルに表示されていることがわかります。 下のスクリーンショットに示すような電子メール アドレスのリストがあり、それらすべてに電子メールまたは個別の電子メールを送信したい場合は、次の VBA コードを使用すると便利です。


1.2.1 VBA スクリプトを使用してセル内の複数の受信者に電子メールを送信する

1. 電子メールの送信先となるすべての電子メール アドレスを含むワークシート。 を押します。 他の + F11 キーを押して アプリケーション向け Microsoft Visual Basic 窓。

2。 の中に アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > モジュール、 次に、次のコードを モジュール (コード) 窓。

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.

注意:

1) 上記のダイアログ ボックスのポップアップを望まず、コードで直接メール アドレスの範囲を指定したい場合は、次の行を置き換えてください。
Set xRg = Application.InputBox( "アドレスリストを選択してください:"、 "Kutools for Excel"、xTxt 、、、、、、 8)
 
xRg = Range( "A2:A7")を設定します
2) 次の行で、独自の電子メールの件名と本文を指定できます。
.Subject="テスト"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) 次の新しいメッセージ ウィンドウを開かずにメールを直接送信するには、次の行を置き換える必要があります。
。表示
 
。送信

コードを実行すると、選択した範囲内のすべての電子メール アドレスがメッセージ ウィンドウの [宛先] フィールドに表示されます。 スクリーンショットを参照してください:


1.2.2 VBAスクリプトを使用して、セルにリストされた各受信者に個別に電子メールを送信します

上記のコードは、選択した範囲内のすべての電子メール アドレスをメッセージ ウィンドウの [宛先] フィールドに追加します。 セルにリストされた各電子メール アドレスに、互いの電子メール アドレスを表示せずに個別に電子メールを送信する場合は、次の VBA スクリプトを試すことができます。

1. メールの送信先となるすべてのメール アドレスを含むワークシート。 を押します。 他の + F11 への鍵 アプリケーション用 Microsoft Visual Basic ウィンドウを開く.

2。 の中に アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > モジュールをクリックし、次のコードを [モジュール (コード)] ウィンドウに貼り付けます。

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 Outlook16.0オブジェクトライブラリ ボックスをクリックし、 OK ボタンをクリックして変更を保存します。

4。 プレス F5 コードを実行するためのキーと Kutools for Excel ダイアログボックスがポップアップします。 メールアドレスのリストを選択してクリック [OK]をクリックします。

注意:

1) 上記のダイアログ ボックスのポップアップを望まず、コードで直接メール アドレスの範囲を指定したい場合は、次の行を置き換えてください。
Set xRg = Application.InputBox( "アドレスリストを選択してください:"、 "Kutools for Excel"、xTxt 、、、、、、 8)
 
xRg = Range( "A2:A7")を設定します
2) 次の行で、独自の電子メールの件名と本文を指定できます。
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) 次のメッセージ ウィンドウを開かずにメールを直接送信するには、次の行を置き換える必要があります。
。表示
 
。送信

この例では、選択した範囲に XNUMX つの電子メール アドレスがあるため、下のスクリーンショットに示すように、To フィールドに別の電子メール アドレスがリストされた XNUMX つの Outlook メッセージ ウィンドウが自動的に作成されます。

5.最後に、をクリックします 送信 ボタンをクリックして、メールを XNUMX つずつ送信します。


2. Excel から送信された電子メールに添付ファイルまたは Outlook 署名を挿入する (VBA スクリプトを使用)

このセクションでは、Excel から送信された電子メールに添付ファイルまたは Outlook の既定の署名を挿入する方法について説明します。

2.1 Excel から送信されたメールに添付ファイルを挿入する

ここでは、添付ファイルを挿入するさまざまなケースについて説明します。必要に応じて方法を選択できます。 このセクションでは、次のことを学習できます (次のリンクのいずれかをクリックして、対応する方法に移動します)。


2.1.1 特定のファイルを添付ファイルとして電子メールで送信する

次の VBA コードを適用して、フォルダー内の XNUMX つまたは複数のファイルを Excel から添付ファイルとして電子メールで送信できます。

1。 プレス 他の + F11 キー。

2.オープニングで アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > モジュール. 次に、次の 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 = ""
            .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

ノート:

1)ラインで .To = 、交換してください あなた自身の受信者の電子メールアドレスで;
2) メールの件名とメール本文を別々に変更する .Subject = "test" & .HTMLBody = "テスト";
3) 必要に応じて Cc および Bcc 受信者を追加できます。 行の下に次の XNUMX 行を追加するだけです。=に .
.CC = 「メールアドレス」
.BCC =「メールアドレス」

3。 次に、をクリックします ツール > 参考文献。 参照– VBAProject ダイアログボックスで、 Microsoft Outlook16.0オブジェクトライブラリ ボックスをクリックし、 OK ボタンをクリックして変更を保存します。

4。 プレス F5 コードを実行するためのキー、次に ブラウズ ウィンドウが表示されたら、電子メールに添付する必要があるファイルを選択してから、 OK.

次に、メッセージ ウィンドウが表示されます。 選択したファイルが添付フィールドに添付ファイルとして表示されていることがわかります。


2.1.2 現在のワークシートを添付ファイルとして電子メールで送信

現在のワークシートを Excel から添付ファイルとして電子メールで送信する場合は、このセクションで VBA スクリプトを適用できます。

1。 プレス 他の + F11 キー。

2.オープニングで アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック insert > モジュール. 次に、次の 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 = ""
    .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

注意:

1) ラインで .=に 、交換してください 実際の受信者の電子メール アドレスを使用します。 複数のメールアドレスが必要な場合は、セミコロンで区切ってください。
2) メールの件名とメール本文を別々に変更する .Subject = "kte機能" & .Body = "このドキュメントを確認してお読みください。";
3) 次の XNUMX 行で:
.CC = 「メールアドレス」
.BCC =「メールアドレス」
cc および bcc 受信者を追加する場合は、テキスト「メールアドレス必要な電子メール アドレスの行に .
cc と bcc の受信者が必要ない場合は、アポストロフィを追加してください ' 各行の前。

3。 プレス F5 キーを押してコードを実行すると、現在のワークシートが Excel ワークブックとして保存され、添付ファイルとしてメッセージ ウィンドウに自動的に挿入されます。 スクリーンショットを参照してください:

注: 現在のワークシートのみを含む添付されたブックは、元のブックと同じ名前です。 また、コードを実行した時間もワークブック名​​に追加されます。


2.1.3 現在のワークブックを添付ファイルとして電子メールで送信する

Excel から現在のワークシートを添付ファイルとして電子メールで送信する VBA コードを学習した後、ここでは、ブック全体を添付ファイルとして電子メールで送信するのに役立つ別の VBA スクリプトを提供します。 以下のようにしてください。

1。 プレス 他の + F11 キー。

2.オープニングで アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > モジュール。 次に、次の 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 = ""
    .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

注意:

1)ラインで .To = 、交換してください 実際の受信者の電子メール アドレスを使用します。 複数のメールアドレスが必要な場合は、セミコロンで区切ってください。
2) メールの件名とメール本文を別々に変更する .Subject = "kte機能" & .Body = "このドキュメントを確認してお読みください。";
3) 次の XNUMX 行で:
.CC = 「メールアドレス」
.BCC =「メールアドレス」
cc および bcc 受信者を追加する場合は、テキスト「メールアドレス必要な電子メール アドレスの行に .
cc と bcc の受信者が必要ない場合は、アポストロフィを追加してください ' 各行の前。

3。 プレス F5 キーを押してコードを実行すると、現在のワークブックがメッセージ ウィンドウに添付ファイルとして自動的に挿入されます。 スクリーンショットを参照してください:


2.1.4 ワークブック全体を PDF 添付ファイルとして電子メールで送信する

ほとんどの人は、Excel ブックを PDF ファイルとして保存し、添付ファイルとして他のユーザーに送信する傾向があります。 このセクションでは、ブックを手動で PDF ファイルとして保存することなく、現在開いているブックを PDF 添付ファイルとして Excel から直接電子メールを送信する方法を紹介します。

1。 プレス 他の + F11 キー。

2.オープニングで アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > モジュール。 次に、次の 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 = ""
       .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

注意:

1)ラインで .To = 、交換してください 実際の受信者の電子メール アドレスを使用します。 複数のメールアドレスが必要な場合は、セミコロンで区切ってください。
2) メールの件名とメール本文を別々に変更する .Subject = "test" & .Body = "テスト";
3) 次の XNUMX 行で:
.CC = "メールアドレス"
.BCC = "メールアドレス"
cc および bcc 受信者を追加する場合は、テキスト「Eメールアドレス必要な電子メール アドレスの行に .
cc と bcc の受信者が必要ない場合は、アポストロフィを追加してください ' 各行の前。
4) PDF ファイルの名前は、元のワークブックの名前と同じになります。 また、コードを実行した時間もワークブック名​​に追加されます。 ファイル名にタイムスタンプを追加する必要がない場合は、削除してください & Format(現在、「dd-mmm-yy h-mm-ss」) 以下の行から。
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf "

3。 プレス F5 コードを実行するためのキー。 次に、現在のワークブックが PDF ファイルの添付ファイルとして新しいメッセージ ウィンドウに自動的に挿入されます。 スクリーンショットを参照してください:


2.1.5 現在のワークシートを PDF 添付ファイルとして電子メールで送信する

たとえば、「月次売上」という名前のワークブックがあり、「売上報告」という名前のワークシートで売上報告表を完成させ、このワークシートを PDF ファイルとして同僚に送信したいとします。 次の VBA コードは便利です。

1。 プレス 他の + F11 キー。

2.オープニングで アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック insert > モジュール。 次に、次の 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 = ""
    .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)ラインで .To = 、交換してください 実際の受信者の電子メール アドレスを使用します。 複数のメールアドレスが必要な場合は、セミコロンで区切ってください。
2) メールの件名とメール本文を別々に変更する .Subject = "test" & .Body = "テスト";
3) 次の XNUMX 行で:
.CC = "メールアドレス"
.BCC = "メールアドレス"
cc および bcc 受信者を追加する場合は、テキスト「Eメールアドレス必要な電子メール アドレスの行に .
cc と bcc の受信者が必要ない場合は、アポストロフィを追加してください ' 各行の前。
4) PDF ファイルの名前は次のようになります。 元のワークブックの名前_元のワークシートの名前. この場合、PDF の名前は Monthly sales_sales report になります。

3。 プレス F5 コードを実行するためのキー。 次に、現在のワークシートが PDF ファイルの添付ファイルとして新しいメッセージ ウィンドウに自動的に挿入されます。 スクリーンショットを参照してください:


2.2 Excel から送信された電子メールに Outlook の署名を挿入する

上記のケースを例にとると、上記の VBA コードを適用して現在のワークシートを Excel から PDF ファイルの添付ファイルとして送信しますが、メッセージ ウィンドウに Outlook の署名を追加することはできません。 Excel から送信された電子メールで Outlook の既定の署名を保持するには、次の方法が役立ちます。

XNUMX つの 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 = ""
    .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. 通常は、 他の + F11 キーを押して アプリケーション向け Microsoft Visual Basic 窓。

2。 の中に アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > モジュール. 次に、上記の VBA コード 2 を [モジュール (コード)] ウィンドウに貼り付けます。

3. Excel から送信された電子メールで Outlook の既定の署名を保持するには、次のように VBA コード 2 を変更する必要があります。

1)交換してください 。体 と並ぶ VBAコード1;
2) 行を移動する 。表示 ラインの下 OutlookMail を使用 (または他のコードで xMailOut を使用)。 スクリーンショットを参照してください:

変更後の完全なコードは次のとおりです。

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 = ""
    .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スクリプトを使用)

上記の例では、コードを手動で実行してメール配信を実現する必要があります。 セルが特定の値に達したとき、セルの値が変化したとき、日付に達したときなど、特定の条件が満たされたときにコードを自動的にトリガーする場合は、電子メールが自動的に送信されます。 このセクションでは、特定の条件が満たされたときに Excel から自動的にメールを送信するために、Excel ユーザーが Google でよく検索する条件を一覧表示します。

3.1 セルが特定の値に達したときに自動的にメールを送信する

以下のスクリーンショットに示すように、セル D6 に売上合計が含まれる売上表があるとします。 たとえば、売上合計が 10000 を超えたときに自動的に電子メールを作成または送信しますが、売上合計が 10000 以下の場合は何もしません。

1. sales テーブルを含むワークシートで、シート タブを右クリックし、 コードを見る 右クリックメニューから。

2.オープニングで アプリケーション向け Microsoft Visual Basic ウィンドウで、次の 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 = ""
.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

ノート:

1) D6 電子メールを送信する値に基づくセルです。
2) > 10000 これは、D6 の値が 10000 より大きい場合に電子メールが送信されることを意味します。
3) レンジ(“D6”) 次の行の は、電子メール本文が D6 の値を参照することを意味します。
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4)ラインで .To = 、交換してください 実際の受信者の電子メール アドレスを使用します。 複数のメールアドレスが必要な場合は、セミコロンで区切ってください。
5) メールの件名を変更する .Subject = "test".
6) 次の XNUMX 行で:
.CC = "メールアドレス"
.BCC=「メールアドレス」
cc および bcc 受信者を追加する場合は、テキスト「Eメールアドレス必要な電子メール アドレスの行に .
cc と bcc の受信者が必要ない場合は、アポストロフィを追加してください ' 各行の前。

これ以降、セル D6 の値が 10000 を超えると、下のスクリーンショットに示すようにメールが作成されます。


3.2 セルの値が変化したときに自動的に電子メールを送信する

以下のスクリーンショットに示すように、月ごとの売上が異なるワークシートに含まれ、売上合計がワークシートに含まれるワークブックを受け取ったとします。 売上合計を確認する必要があります。売上合計が変更された場合は、ワークブックを送信者に送り返し、セルが変更されたことを送信者に通知します。

1. sales テーブルを含むワークシートで、シート タブを右クリックし、 コードを見る 右クリックメニューから。

2.オープニングで アプリケーション向け Microsoft Visual Basic ウィンドウで、次の 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 = ""
.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

ノート:コードでは、

1) B14 コードの は、セル B14 の値が変更されたときにメールを送信することを意味します。
2)ラインで .To = 、交換してください 実際の受信者の電子メール アドレスを使用します。 複数のメールアドレスが必要な場合は、セミコロンで区切ってください。
3) メールの件名を変更する .Subject = "ワークシートが変更されました".
4) 次の XNUMX 行で:
.CC = "メールアドレス"
.BCC = "メールアドレス"
cc および bcc 受信者を追加する場合は、テキスト「Eメールアドレス必要な電子メール アドレスの行に .
cc と bcc の受信者が必要ない場合は、アポストロフィを追加してください ' 各行の前。

これ以降、セル B14 の値が変更されると、下のスクリーンショットに示すように、Outlook メッセージが自動的に作成されます。


3.3 ワークブックが保存されたときに電子メールを自動的に送信する

変更後に他のユーザーと共有する必要があるワークブックがある場合は、通常、ワークブックを保存し、電子メール クライアントを起動し、このワークブックを添付して新しい電子メールを作成し、対応するフィールドを作成して電子メールを送信する必要があります。 このセクションでは、ワークブックを保存するたびに電子メールを自動的に作成する方法を示します。 以下のようにしてください。

1。 プレス 他の + F11 キーを押して アプリケーション向け Microsoft Visual Basic 窓。

2. このウィンドウで、ダブルクリックします このワークブック セクションに プロジェクト ペインに次の 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 = ""
        .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

ノート:コードでは、

1)ラインで .To = 、交換してください 実際の受信者の電子メール アドレスを使用します。 複数のメールアドレスが必要な場合は、セミコロンで区切ってください。
2) 電子メールの件名と本文を行ごとに個別に変更します .Subject = "ワークブックが更新されました" & .Body = "Hi、"&Chr(13)&Chr(13)&"ファイルが更新されました。".
3) 次の XNUMX 行で:
.CC = "メールアドレス"
.BCC = "メールアドレス"
cc および bcc 受信者を追加する場合は、テキスト「Eメールアドレス必要な電子メール アドレスの行に .
cc と bcc の受信者が必要ない場合は、アポストロフィを追加してください ' 各行の前。

3. これから、ワークブックを保存するときは、 Ctrlキー + S キーまたは Save ボタンを押すと、Outlook メールが自動的に作成されます。 現在のワークブックが添付ファイルとして添付され、指定されたコンテンツがフィールドに取り込まれていることがわかります。 スクリーンショットを参照してください:

ヒント: このワークブックを頻繁に使用する場合は、ワークブックをファイルとして保存することをお勧めします。 Excelマクロが有効なブック 今後使用するために VBA スクリプトを保存します。 手順は次のとおりです。

1)をクリック File > 名前を付けて保存をクリックし、ファイルを保存するフォルダーを選択します。
2) 名前を付けて保存 ダイアログ ボックスで、必要に応じてファイルの名前を変更します。 ファイル名 テキストボックス、選択 Excelマクロが有効なブック セクションに タイプとして保存 ドロップダウンリストをクリックし、最後に Save ボタン。 スクリーンショットを参照してください:


3.4 特定の時間にメールを自動送信する

タスク割り当てブックを含む電子メールを誰かに送信する必要があるとします。 毎週金曜日の朝9時、および電子メールクライアントを手動で操作することなく、Excelでこれを自動的に行いたい. このセクションでは、それを行う方法を示します。

1。 プレス 他の + F11 キーを押して アプリケーション向け Microsoft Visual Basic 窓。

2。 の中に アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > モジュール。 次に、次の VBA コードをモジュール ウィンドウに貼り付けます。

VBA code1 : 現在のブックを 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 = ""
    .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. このウィンドウで、ダブルクリックします このワークブック セクションに プロジェクト ペインに次の VBA コードを貼り付けます。 ThisWorkbook(コード) 窓。

VBA コード 2: 特定の時間に電子メールを自動的に送信する

Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub

ノート:

1) VBA コード 1 では、 金曜日 次の行では、電子メールが毎週金曜日に自動的に送信されることを意味します。
Weekday(Date) = vbFriday の場合
2) VBA コード 1 と VBA コード 2 では、時間 09:00:00 は、メールが特定の日の午前 9 時に送信されることを意味します。
必要に応じて曜日と時間を変更できます。
3) コードが実行されると、電子メールが作成されます。 メッセージ ウィンドウをポップアップ表示せず、直接送信する必要がある場合は、その行を削除してください。 。表示 VBA コード 1 から削除し、 アポストロフィ 行の前 '。送信.

4. コードを保存し、次のようにブックを Excel マクロ有効ブックとして保存します。

4.1)をクリック File > 名前を付けて保存をクリックし、ファイルを保存するフォルダーを選択します。
4.2) 名前を付けて保存 ダイアログ ボックスで、必要に応じてファイルの名前を変更します。 ファイル名 テキストボックス、選択 Excelマクロが有効なブック セクションに タイプとして保存 ドロップダウンリストをクリックし、最後に Save ボタン。 スクリーンショットを参照してください:

5. 保存したマクロを有効にしたワークブックを開くと、日時が来ると電子メールが作成または自動的に送信されます。


4. 追加トピック

このセクションでは、Excel から電子メールを送信するときに発生する可能性があるその他のトピックを収集します。

4.1 Excel からセルの範囲を電子メールで送信する (VBA スクリプトを使用)

下のスクリーンショットに示すように、Excel ワークシートに月間売上表があり、この月間売上表を電子メールの本文コンテンツまたは添付ファイルとして直接送信する必要があるとします。 ここでは、それを行うための XNUMX つの方法を紹介します。

4.1.1 Excel から範囲を本文の一部として電子メールで送信する

次の VBA コードを実行して、Excel から電子メール本文の一部としてセルの範囲を送信できます。

1。 プレス 他の + F11 キーを押して アプリケーション向け Microsoft Visual Basic 窓。

2。 の中に アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック ツール > 参考文献。 そして、 Microsoft Outlook16.0オブジェクトライブラリ ボックスにフィルタを記入し、 OK セクションに 参照– VBAProject ダイアログボックス。

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 = ""
        .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

ノート:コードでは、

1)ラインで .To = 、交換してください 実際の受信者の電子メール アドレスを使用します。 複数のメールアドレスが必要な場合は、セミコロンで区切ってください。
2) 次の XNUMX 行で:
.CC = "メールアドレス"
.BCC = "メールアドレス"
cc および bcc 受信者を追加する場合は、テキスト「Eメールアドレス必要な電子メール アドレスの行に .
cc と bcc の受信者が必要ない場合は、アポストロフィを追加してください ' 各行の前。

4。 プレス F5 コードを実行するためのキー。 ポップアップで Kutools for Excel ダイアログ ボックスで、メール本文の一部として送信する必要があるセルの範囲を選択し、 OK。 スクリーンショットを参照してください:

その後、Outlook メールが自動的に作成されます。 ワークシートで選択した範囲がメール本文に挿入されていることがわかります。 スクリーンショットを参照してください:


4.1.2 Excel から範囲を添付ファイルとして電子メールで送信する

ワークシート内のセル範囲を Excel から添付ファイルとして電子メールで送信する必要がある場合。 次の VBA コードを試すことができます。

1。 プレス 他の + F11 キー。

2.オープニングで アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > モジュール. 次に、次の 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 = ""
    .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

ノート:

1)ラインで .To = 、交換してください 実際の受信者の電子メール アドレスを使用します。 複数のメールアドレスが必要な場合は、セミコロンで区切ってください。
2) メールの件名とメール本文を別々に変更する .Subject = "2021 年の月間売上高" & .Body = "こんにちは、このドキュメントを確認して読んでください。";
3) 次の XNUMX 行で:
.CC = 「メールアドレス」
.BCC =「メールアドレス」
cc および bcc 受信者を追加する場合は、テキスト「メールアドレス必要な電子メール アドレスの行に .
cc と bcc の受信者が必要ない場合は、アポストロフィを追加してください ' 各行の前。

3。 プレス F5 コードを実行するためのキー。 ポップアップで Kutools for Excel ダイアログ ボックスで、電子メールの添付ファイルとして送信する必要があるセルの範囲を選択し、 OK。 スクリーンショットを参照してください:

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


4.2 Excel でボタンがクリックされたときにメールを送信する

たとえば、コマンド ボタンをクリックして、Excel から電子メールを送信するためのマクロをトリガーする必要がある場合は、ワークシートのコマンド ボタンをクリックして、現在のブックを添付ファイルとして他のユーザーに送信します。 次の手順に従って、それを完了することができます。

1。 クリック Developer > インセット > コマンドボタン(ActiveXコントロール). 次に、ワークシートにコマンド ボタンを描画します。

ヒント注: コマンド ボタンが既にある場合は、この手順を省略します。

2。 プレス 他の + F11 キーを押して アプリケーション向け Microsoft Visual Basic 窓。 ウィンドウで、をクリックします インセット > モジュールをクリックし、[モジュール (コード)] ウィンドウに VBA コード (現在のブックを Excel から添付ファイルとして電子メールで送信するために使用されるコード) を貼り付けます。

コードを取得するには、ここをクリックしてください.

Note: 手順 2 で作成したマクロの名前は次のとおりです。 ワークブックの送信.

3。 プレス 他の + Q を閉じるためのキー アプリケーション向け Microsoft Visual Basic 窓。

4. 次に、コマンド ボタンにマクロを割り当てる必要があります。 コマンドボタンを右クリックして選択 コードを表示 右クリックメニューから選択します。

5.次に、 アプリケーション向け Microsoft Visual Basic ウィンドウがポップアップすると、次の XNUMX 行がリストに表示されます。 シート(コード) 窓。

Private Sub CommandButton1_Click()
End Sub

6. コマンド ボタンのサブプロシージャ内に既存のマクロの名前を入力します。

7。 プレス 他の + Q を閉じるためのキー Visual Basic エディター、クリック Developer > デザインモード デザインモードをオフにします。

コマンド ボタンをクリックして、現在のワークブックを電子メールの添付ファイルとして電子メールで送信できます。


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("") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next

上記の VBA コードの使用方法

1) 独自のコードでは、「OutlookMailをオブジェクトとして薄暗くする」 VBAコード1;
2) 行の下に VBA コード 2 を追加します。エラーで次の再開」をコードに追加します。 次に、電子メールの送信に使用する電子メール アドレスを VBA コード 2 で指定します。

この例では、特定の電子メール アカウントを指定して、現在のブックを Excel から添付ファイルとして送信します。 以下のようにしてください。

1。 プレス 他の + F11 キー。 の中に アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック ツール > 参考文献。 そして、 Microsoft Outlook16.0オブジェクトライブラリ ボックスにフィルタを記入し、 OK セクションに 参照– VBAProject ダイアログボックス。

2。 クリック インセット > モジュール. 次に、次の VBA コードを モジュール (コード) 窓。

VBA コード: 指定された Outlook アカウントを使用して、現在のブックを Excel から電子メールの添付ファイルとして送信します。

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("") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next
'End
With OutlookMail
    .To = ""
    .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 ウィンドウで、次の VBA コードを シート(コード) 窓。

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

ノート:コードでは、

1) 次の行で、 E2:E7 に基づいて電子メールを送信する期日が含まれています。 C2:C7 メールの送信先のメールアドレスが含まれています。 と D2:D7 プロジェクトの有効期限が近づいていることを受信者に通知するために電子メール本文に追加するコメントが含まれています。 必要に応じて範囲を変更できます。
xRgDate = Range("E2:E7") を設定します
xRgSend = Range("C2:C7") を設定します
xRgText = Range("D2:D7") を設定
2) 次の行は、期日が今日から 1 日以上 7 日以内でなければならないことを意味します。 必要に応じて変更できます。
CDate(xRgDateVal)-日付<= 7およびCDate(xRgDateVal)-日付>0の場合
3)ラインで .To = 、交換してください 実際の受信者の電子メール アドレスを使用します。 複数のメールアドレスが必要な場合は、セミコロンで区切ってください。
4) メールの件名を変更する .Subject = "ワークシートが変更されました".
5) 次の XNUMX 行で:
.CC = "メールアドレス"
.BCC = "メールアドレス"
cc および bcc 受信者を追加する場合は、テキスト「Eメールアドレス必要な電子メール アドレスの行に .
cc と bcc の受信者が必要ない場合は、アポストロフィを追加してください ' 各行の前。

3。 プレス F5 コードを実行するためのキー。 そして、有効期限が条件に一致すると、対応するメールが作成されます。 この場合、下のスクリーンショットに示すように、XNUMX つのメールが作成されます。


5. Excel から簡単にメールを送信できる便利なツール

あなたが VBA 初心者の場合、上記の方法は扱いにくいかもしれません。 おすすめはこちら Kutools for Excelさん メールを送る この機能を使用すると、数回クリックするだけで簡単に Excel からメールを送信できます。 以下のようにしてください。

申請する前に Kutools for Excelについては 最初にダウンロードしてインストールします.

5.1 必要な電子メール フィールドを含むメーリング リストを簡単に作成する

メール送信機能を適用する前に、必要なメール フィールドを含むメーリング リストを作成する必要があります。 ここでは、メーリング リストの作成機能が役立ちます。

1。 クリック クツールズプラス > メーリングリストを作成する.

2.オープニングで メーリングリストを作成する ウィンドウの場合、次のように構成する必要があります。

2.1) メーリングリストの列 セクションで、メールに必要なフィールドを確認します。
2.2) 添付ファイル セクションで、必要な添付ファイルを XNUMX つ以上チェックします。
2.3) メーリング リストを配置する場所を指定します。
2.4)をクリックします 創造する ボタン。 スクリーンショットを参照してください:

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

3. 次に、サンプルの元のデータを独自のフィールド データに置き換える必要があります。

これで、メーリング リスト テーブルが作成されました。 先に申し込んでください メールを送る 作成したフィールドに基づいて Excel からメールを送信する機能。

  このユーティリティの無料トライアル(30日)が必要な場合は、 クリックしてダウンロードしてください、次に、上記の手順に従って操作を適用します。


5.2 メーリングリストで作成したフィールドを含むメールを簡単に送信する

メーリングリストを作成した後 (クリックして方法を知る) には、メールに必要なフィールドが含まれているため、これらのフィールドを含む Excel からメールを送信できるようになりました。

1. メーリング リスト全体を選択し、 クツールズプラス > メールを送る.

2。 の中に メールを送る ダイアログボックスで、次の設定を行ってください。

2.1) フィールドは、メーリング リストで指定したフィールドによって、各フィールドのダイアログ ボックスに自動的に入力されます。
ヒント: 現時点で特定のフィールドが必要ない場合は、ドロップダウン リストで空白のオプションを選択します。
2.2) プレースホルダーを挿入 (オプション): メール本文に可変情報を挿入する必要がある場合。
たとえば、複数の受信者にそれぞれにパーソナライズされた名前を付けて電子メールを送信する必要がある場合、プレースホルダーを挿入する必要がある電子メール本文にカーソルを置き、フィールド「E: 名」 (またはメーリング リストの他の名前フィールド) をクリックし、[挿入] をクリックします。 プレースホルダー ボタン;
受信者が電子メールを受信すると、電子メールの本文は同じままですが、名前はそれぞれに固有です。
2.3) 必要に応じてメール本文を作成します。
2.4) 次のことを確認してください。 Outlook経由でメールを送信する ボックスがチェックされています。
2.5)をクリックします 送信 ボタン。 スクリーンショットを参照してください:

3.次に、 Kutools for Excel 送信された電子メールの数を示すダイアログ ボックスが表示されたら、 OK ボタンをクリックして、このダイアログボックスを閉じます。

ヒント:あなたは行くことができます 送信済みアイテム Outlook のフォルダーを開き、送信したメールを確認します。


5.3 HTML 本文 (ハイパーリンク、画像などを含む) を含むメールを簡単に送信する

この電子メールの送信機能を使用すると、ハイパーリンク、画像、さまざまなフォント サイズやフォントの色などを含む HTML 電子メールを作成できます。

必要な電子メール フィールドを含むメーリング リストを作成する,

ときにあなたを [電子メールの送信] ダイアログ ボックスを構成する、ツールバーのオプションを使用して本文コンテンツを充実させることができます。

以下のスクリーンショットを参照してください。


5.4 メール送信時に Outlook の既定の署名を簡単に挿入する

上記の方法では、Outlook の既定の署名を使用して電子メールを送信するのに役立つ VBA コードを示しました。 ここでメール送信機能を使用すると、オプションをチェックするだけで、Excel から送信したメールに Outlook の既定の署名が挿入されます。

必要な電子メール フィールドを含むメーリング リストを作成する,

日時 [電子メールの送信] ダイアログ ボックスを構成する、クリックする必要があります オプション > Outlookの署名設定を使用する.

Note注: [Outlook の署名設定を使用する] オプションの前にチェック マークが表示されていることを確認してください。

受信者が電子メールを受信すると、電子メール本文の最後に Outlook の既定の署名が表示されます。


5.5 指定したメール アカウントから簡単にメールを送信する

既定のアカウントを使用する代わりに、特定の電子メール アカウントを使用して Excel から電子メールを送信するには、電子メールの送信機能も簡単に実行できます。

必要な電子メール フィールドを含むメーリング リストを作成する,

日時 [電子メールの送信] ダイアログ ボックスを構成する、クリックする必要があります オプション > から送信されましたをクリックし、メールの送信元にする必要があるメール アカウントをクリックします。

Note: メールアカウントを選択すると、その前にチェックマークが表示されます。

こちら このメール送信機能の詳細については、こちらをご覧ください。

  このユーティリティの無料トライアル(30日)が必要な場合は、 クリックしてダウンロードしてください、次に、上記の手順に従って操作を適用します。

結論として、Excel からメールを送信することは、日常業務において非常に役立ちます。 この記事では、Excel から送信される電子メールのより包括的なトピックについて説明します。他のトピックや簡単な解決策がある場合は、コメントを残してお知らせください。

最高のオフィス生産性向上ツール

🤖 Kutools AI アシスタント: 以下に基づいてデータ分析に革命をもたらします。 インテリジェントな実行   |  コードを生成  |  カスタム数式の作成  |  データを分析してグラフを生成する  |  Kutools関数を呼び出す...
人気の機能: 重複を検索、強調表示、または識別する   |  空白行を削除する   |  データを失わずに列またはセルを結合する   |   数式なしのラウンド ...
スーパールックアップ: 複数の基準の VLookup    複数の値の VLookup  |   複数のシートにわたる VLookup   |   ファジールックアップ ....
詳細ドロップダウン リスト: ドロップダウンリストを素早く作成する   |  依存関係のドロップダウン リスト   |  複数選択のドロップダウンリスト ....
列マネージャー: 特定の数の列を追加する  |  列の移動  |  Toggle 非表示列の表示ステータス  |  範囲と列の比較 ...
注目の機能: グリッドフォーカス   |  デザインビュー   |   ビッグフォーミュラバー    ワークブックとシートマネージャー   |  リソースライブラリ (自動テキスト)   |  日付ピッカー   |  ワークシートを組み合わせる   |  セルの暗号化/復号化    リストごとにメールを送信する   |  スーパーフィルター   |   特殊フィルター (太字/斜体/取り消し線をフィルター...) ...
上位 15 のツールセット12 テキスト ツール (テキストを追加, 文字を削除する、...)   |   50+ チャート 種類 (ガントチャート、...)   |   40+ 実用的 (誕生日に基づいて年齢を計算する、...)   |   19 挿入 ツール (QRコードを挿入, パスから画像を挿入、...)   |   12 変換 ツール (数字から言葉へ, 通貨の換算、...)   |   7 マージ&スプリット ツール (高度な結合行, 分割セル、...)   |   ... もっと

Kutools for Excel で Excel スキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、生産性を向上させ、時間を節約するための300以上の高度な機能を提供します。  最も必要な機能を入手するにはここをクリックしてください...

説明


Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
Comments (0)
No ratings yet. Be the first to rate!
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations