Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

Excel で条件が満たされたときに電子メールを自動的に送信する方法

メールの自動送信 フリーサイズのメッセージをデザインし、ユーザーに届けることができます。自動メールを生成して送信することで、時間を節約できます。特定の時間に電子メールを送信できるため、電子メールの自動化は潜在的な消費者と関わるための優れたアプローチです.適切なタイミングで適切な人に電子メール通知を送信できる機能は、電子メール自動化の最も価値のある機能です。この記事では、さまざまな VBA マクロのデモを行います。 条件が満たされたときに自動的に電子メールを送信する Excel の。

ワークブックをダウンロードして練習できます。

Excel で条件が満たされたときに自動的にメールを送信する 3 つの方法

条件が満たされたときはいつでも、頻繁に顧客に電子メールを送信する必要があります。 VBA マクロの使用 、メール機能をカスタマイズできます。そのため、VBA を使用して同時に多数の人にメールを送信する場合があります。 技術。マクロを使用してメールを自動送信するには、Outlook が必要です 私たちのコンピュータにプリインストールされています。このコードは、Outlook を使用して受信者にメールを送信します。 .

1.セルの値に基づいて電子メールを自動的に送信する Excel VBA マクロ

Excel VBA マクロを使用します データセットの特定の列の値に基づいて電子メールを自動的に送信します。以下のデータセットは、この例を示すために使用されます。セル D5 のセル値が 10 より大きい 、メールを自動送信する機能を開発します。

スーパー ショップの顧客の詳細に関する次のデータセットがあるとします。データセットの列 B には顧客の名前が含まれています 、列 C のメール アドレス 、および D 列の製品の購入に対する会費の一部 .ここで、未払いの請求書の支払いを要求するメールを顧客に送信したいと考えていますが、従うべき条件があります:顧客の請求額が 10 を超える場合 そうして初めて、私たちは彼らに電子メールを送信します。それでは、条件が満たされたときにセルの値に基づいて電子メールを自動的に送信する手順を見てみましょう。

Excel で条件が満たされたときに電子メールを自動的に送信する方法

手順:

  • まず、開発者に移動します リボンのタブ
  • 次に、 コード から カテゴリで、Visual Basic をクリックします。 Visual Basic Editor を開く .または Alt + F11 を押します Visual Basic Editor を開く .

Excel で条件が満たされたときに電子メールを自動的に送信する方法

  • これを行う代わりに、ワークシートを右クリックして [コードの表示] に移動することができます . Visual Basic Editor にも移動します .

Excel で条件が満たされたときに電子メールを自動的に送信する方法

  • これは Visual Basic Editor に表示されます 範囲からテーブルを作成するコードを記述します。
  • そして、VBA をコピーして貼り付けます 以下にコードを示します。

VBA コード:

Dim r As Range
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set r = Intersect(Range("D5"), Target)
If r Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10 Then
Call Send_Mail_Automatically1
End If
End Sub
Sub Send_Mail_Automatically1()
Dim ob1 As Object
Dim ob2 As Object
Dim str As String
Set ob1 = CreateObject("Outlook.Application")
Set ob2 = ob1.CreateItem(0)
str = "Hello!" & vbNewLine & vbNewLine & "To prevent further costs," _
& vbNewLine & "please pay before the deadline."
On Error Resume Next
With ob2
.To = Range("C5").Value
.cc = ""
.BCC = ""
.Subject = "Request to Pay Bill"
.Body = str
.Send
End With
On Error GoTo 0
Set ob2 = Nothing
Set ob1 = Nothing
End Sub
  • その後、 RubSub をクリックしてコードを実行します。 ボタンを押すか、キーボード ショートカットの F5 を押します .

Excel で条件が満たされたときに電子メールを自動的に送信する方法

  • 次に、マクロ ダイアログが表示されます。右側の マクロ をクリックします 次に、実行をクリックします ボタン。

Excel で条件が満たされたときに電子メールを自動的に送信する方法

  • Outlook に移動すると、 アプリケーションを起動して受信ボックスを確認すると、 VBA マクロ 経由で送信されたメールが見つかります。

Excel で条件が満たされたときに電子メールを自動的に送信する方法

VBA コードの説明

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Su
Set r = Intersect(Range("D5"), Target)
If r Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10 Then
Call Send_Mail_Automatically1
End If
End Sub

非公開サブスクを使用します このため。 マクロ を使用しないため このコードを実行するためのウィンドウ。セルの値が変更されると、このコードが自動的に実行されます。 Private Sub を使用しています ワークシートの変更で イベント。次に、セルの数を 1 つに減らします。これが D5 です。 .その後、10 を超えているかどうかを確認します .最後に、条件が満たされた場合、Send_Email_Automatically1 サブ手順 実行されます。

Sub Send_Mail_Automatically1()
Dim ob1 As Object
Dim ob2 As Object
Dim str As String
Set ob1 = CreateObject("Outlook.Application")
Set ob2 = ob1.CreateItem(0)
str = "Hello!" & vbNewLine & vbNewLine & "To prevent further costs," & vbNewLine & "please pay before the deadline."
On Error Resume Next
With ob2
.To = Range("C5").Value
.cc = ""
.BCC = ""
.Subject = "Request to Pay Bill"
.Body = str
.Send

ここでは、Send_Email_Automatically1 を使用します サブ手順 .次に、変数の型を宣言します。 Outlook を使用しています 私たちの電子メールクライアントとして。次に、電子メールの内容をコードに入力します。 文字列 電子メールの本文を表示しています。次に、電子メールをセル値 C5 に送信します。 、顧客の電子メールが保存される場所に、件名を「.Subject」に付けます 」。続いて「.Send」 ' はメールの送信に使用されます。

続きを読む: セルの内容に基づいて Excel から電子メールを自動的に送信する (2 つの方法)

2. VBA コードを使用して期日に基づいて電子メールを自動的に送信する

この方法では、Excel VBA マクロを使用して、請求書の期日が近づくと自動的にメールを送信します。これは一種のリマインダーとして機能します。これを実証するために、以下のデータセットを使用します。データセットには、列 B にいくつかの顧客名が含まれています 、列 Cのメールアドレス 、列 Dで送信したいメッセージ 、列 E の期日支払い期限 .そこで、条件が満たされた日付に応じてメールを自動送信する手順を見てみましょう。

Excel で条件が満たされたときに電子メールを自動的に送信する方法

手順:

  • まず、開発に移動します r リボンのタブ
  • 次に、Visual Basic をクリックします。 Visual Basic Editor を開く .
  • Visual Basic Editor を開く別の方法 Alt + F11 を押すだけです .
  • または、シートを右クリックして [コードを表示] を選択します .
  • これにより、Visual Basic ウィンドウが開きます。
  • その後、VBA コードをコピーして貼り付けます

VBA コード:

Public Sub Send_Email_Automatically2()
    Dim rngD, rngS, rngT As Range
    Dim ob1, ob2 As Object
    Dim LRow, x As Long
    Dim l, strbody, rSendValue, mSub As String
    On Error Resume Next
    Set rngD = Application.InputBox("Deadline Range:", "Exceldemy", , , , , , 8)
    If rngD Is Nothing Then Exit Sub
    Set rngS = Application.InputBox("Email Range:", "Exceldemy", , , , , , 8)
    If rngS Is Nothing Then Exit Sub
    Set rngT = Application.InputBox("Email Topic Range:", "Exceldemy", , , , , , 8)
    If rngT Is Nothing Then Exit Sub
    LRow = rngD.Rows.Count
    Set rngD = rngD(1)
    Set rngS = rngS(1)
    Set rngT = rngT(1)
    Set ob1 = CreateObject("Outlook.Application")
    For x = 1 To LRow
        rngDValue = ""
        rngDValue = rngD.Offset(x - 1).Value
        If rngDValue <> "" Then
        If CDate(rngDValue) - Date <= 7 And CDate(rngDValue) - Date > 0 Then
            rngSValue = rngS.Offset(x - 1).Value
            mSub = rngT.Offset(x - 1).Value & " on " & rngDValue
            l = "<br><br>"
            strbody = "<HTML><BODY>"
            strbody = strbody & "Hello! " & rngSValue & l
            strbody = strbody & rngT.Offset(x - 1).Value & l
            strbody = strbody & "</BODY></HTML>"
            Set ob2 = ob1.CreateItem(0)
            With ob2
                .Subject = mSub
                .To = rSendValue
                .HTMLBody = strbody
                .Send
            End With
            Set ob2 = Nothing
        End If
    End If
    Next
    Set ob1 = Nothing
End Sub
  • さらに、F5 キーを押します または Run Sub をクリックします ボタンでコードを実行します。

Excel で条件が満たされたときに電子メールを自動的に送信する方法

  • では、締め切り列の範囲を選択して、[OK] をクリックします。 .

Excel で条件が満たされたときに電子メールを自動的に送信する方法

  • 同様に、メール列の範囲を選択して [OK] をクリックします。 続行します。

Excel で条件が満たされたときに電子メールを自動的に送信する方法

  • メッセージ列の範囲を選択し、[OK] をクリックします。 .

Excel で条件が満たされたときに電子メールを自動的に送信する方法

  • 以上です。メッセージが電子メール アドレスに送信されるようになりました。 Outlook を確認できます

VBA コードの説明

Public Sub Send_Email_Automatically2()
    Dim rngD, rngS, rngT As Range
    Dim ob1, ob2 As Object
    Dim LRow, x As Long
    Dim l, strbody, rSendValue, mSub As String
    On Error Resume Next
    Set rngD = Application.InputBox("Deadline Range:", "Exceldemy", , , , , , 8)
    If rngD Is Nothing Then Exit Sub
    Set rngS = Application.InputBox("Email Range:", "Exceldemy", , , , , , 8)
    If rngS Is Nothing Then Exit Sub
    Set rngT = Application.InputBox("Email Topic Range:", "Exceldemy", , , , , , 8)
    If rngT Is Nothing Then Exit Sub
    LRow = rngD.Rows.Count
    Set rngD = rngD(1)
    Set rngS = rngS(1)
    Set rngT = rngT(1)
    Set ob1 = CreateObject("Outlook.Application")

ここでも、Private Sub を使用します 、 Send_Email_Automatically2 サブの名前です . 手順 .変数の種類を宣言します。次に、 InputBox を使用します 値の範囲を提供します。その後、 Outlook を選択します メールクライアントとして。

 For x = 1 To LRow
        rngDValue = ""
        rngDValue = rngD.Offset(x - 1).Value
        If rngDValue <> "" Then
        If CDate(rngDValue) - Date <= 7 And CDate(rngDValue) - Date > 0 Then
            rngSValue = rngS.Offset(x - 1).Value
            mSub = rngT.Offset(x - 1).Value & " on " & rngDValue
            l = "<br><br>"
            strbody = "<HTML><BODY>"
            strbody = strbody & "Hello! " & rngSValue & l
            strbody = strbody & rngT.Offset(x - 1).Value & l
            strbody = strbody & "</BODY></HTML>"
            Set ob2 = ob1.CreateItem(0)
            With ob2
                .Subject = mSub
                .To = rSendValue
                .HTMLBody = strbody
                .Send

次に、VBA CDate を使用します 関数を使用して、日付が現在の日付から 7 日以内にあるかどうかを確認します。次に、コードでメールの内容を設定します。最後に、「.Send」を使用します ' メールを送信します。

続きを読む: 日付に基づいて Excel から電子メールを自動的に送信する方法

類似の読み物

  • 共有 Excel ファイルに誰が入っているかを確認する方法 (クイック手順付き)
  • Excel でワークブックの共有を有効にする方法
  • VBA を使用して Excel ワークシートからリマインダー メールを自動的に送信する
  • Excel を使用して Outlook から一括メールを送信する方法 (3 つの方法)
  • マクロを適用して Excel から添付ファイル付きのメールを送信する方法

3.複数の条件が満たされた場合に Excel VBA で電子メールを自動的に送信する

この方法でも、VBA を使用します。 マクロ メールを送信しますが、この場合、複数の条件が満たされた場合にのみ、メッセージが顧客に送信されます。それでは、メールを自動送信するプロセスを見てみましょう。

Excel で条件が満たされたときに電子メールを自動的に送信する方法

手順:

  • 開始するには、[開発者] をクリックします。
  • 次に、Visual Basic Editor を起動します Visual Basic をクリックして .
  • または、Visual Basic Editor にアクセスすることもできます Alt + F11 を押す .
  • または、右クリック シートで [コードを表示] を選択します メニューから。
  • Visual Basic ウィンドウが表示されます。
  • そこにコードを書きます。

VBA コード:

Sub Send_Email_Automatically3()
    Dim wrksht As Worksheet
    Dim add As String, mSub As String, N As String
    Dim eRow As Long, x As Long
    Set wrksht = ThisWorkbook.Sheets("Multiple Conditions")
    With wrksht
        eRow = .Cells(.Rows.Count, 5).End(xlUp).Row
        For x = 5 To eRow
            If .Cells(x, 4) >= 1 And .Cells(x, 5) = "Yes" Then
                add = .Cells(x, 3)
                mSub = "Request to Pay Bill"
                N = .Cells(x, 2)
                Call Multiple_Conditions(add, mSub, N)
            End If
        Next x
    End With
End Sub
Sub Multiple_Conditions(mAddress As String, mSubject As String, eName As String)
    Dim ob1 As Object
    Dim ob2 As Object
    Set ob1 = CreateObject("Outlook.Application")
    Set ob2 = ob1.CreateItem(0)
    With ob2
        .To = add
        .CC = ""
        .BCC = ""
        .Subject = mSub
        .Body = "Hello!" & N & ", To prevent further costs, please pay before the deadline."
        .Attachments.add ActiveWorkbook.FullName
        .Send
    End With
    Set pMail = Nothing
    Set pApp = Nothing
End Sub
  • 最後に F5 キー を押します コードを実行します。

Excel で条件が満たされたときに電子メールを自動的に送信する方法

  • マクロ その後、ダイアログが表示されます。その後、適切な マクロ を選択します 実行を押します ボタン。

Excel で条件が満たされたときに電子メールを自動的に送信する方法

  • 同様に、前の方法で Outlook を開くと、 メールボックスを見ると、VBA マクロで送信したばかりのメールが表示されます。

VBA コードの説明

Sub Send_Email_Automatically3()
    Dim wrksht As Worksheet
    Dim add As String, mSub As String, N As String
    Dim eRow As Long, x As Long
    Set wrksht = ThisWorkbook.Sheets("Multiple Conditions")
    With wrksht
        eRow = .Cells(.Rows.Count, 5).End(xlUp).Row
        For x = 5 To eRow
            If .Cells(x, 4) >= 1 And .Cells(x, 5) = "Yes" Then
                add = .Cells(x, 3)
                mSub = "Request to Pay Bill"
                N = .Cells(x, 2)
                Call Multiple_Conditions(add, mSub, N)

ここでは、2 つの異なる手順を使用します。 Send_Email_Automatically3 最初の Sub Procedure の名前です . 「複数の条件」を設定します ' をシートとして使用し、 変数 を宣言します 種類。次に、最後の行番号を見つけます。さらに、値は行 5 から始まるため、 、行 5 を移動しました コードの最後まで。

Sub Multiple_Conditions(mAddress As String, mSubject As String, eName As String)
    Dim ob1 As Object
    Dim ob2 As Object
    Set ob1 = CreateObject("Outlook.Application")
    Set ob2 = ob1.CreateItem(0)
    With ob2
        .To = add
        .CC = ""
        .BCC = ""
        .Subject = mSub
        .Body = "Hello!" & N & ", To prevent further costs, please pay before the deadline."
        .Attachments.add ActiveWorkbook.FullName
        .Send

次に、Multiple_Conditions を呼び出します 、2 番目の Sub Procedure . Outlook を選択します 私たちのメールクライアントとして。次に、コードでメールの内容を設定します。 添付ファイルの使用 手法では、Excel ファイルを電子メールに追加しています。その後、メールを利用して「.Send」で送信します

続きを読む: Excel で条件が満たされた場合にメールを送信する方法 (3 つの簡単な方法)

結論

上記の方法は、Excel で条件が満たされたときに自動的にメールを送信するのに役立ちます。 .これがあなたを助けることを願っています!質問、提案、またはフィードバックがある場合は、コメント セクションでお知らせください。または、ExcelDemy.com で他の記事をご覧ください。 ブログ!

関連記事

  • Excel から Outlook に自動メールを送信する方法 (4 つの方法)
  • マクロを使用して本文付きの Excel からメールを送信する方法 (簡単な手順)
  • Excel マクロ:セル内のアドレスにメールを送信する (2 つの簡単な方法)
  • Excel スプレッドシートから複数のメールを送信する方法 (2 つの簡単な方法)
  • 本文付きの Excel からメールを送信するマクロ (3 つの便利なケース)
  • 編集可能な Excel スプレッドシートをメールで送信する方法 (3 つの簡単な方法)

  1. Excel で電子メール リンクを削除する方法 (7 つの簡単な方法)

    ワークシートに電子メール アドレスを入力すると、Excel によって電子メール アドレスが自動的にリンクに変換されます。このリンクを削除する方法を探している場合は、この記事が役に立ちます。この記事の焦点は、 メール リンクを削除する 方法を説明することです。 Excel でメール リンクを削除する 7 つの簡単な方法 この記事を説明するために、次のデータセットを使用しました。このデータセットには従業員 ID が含まれています 、従業員名 、メール ID .ここでは、電子メール アドレスがリンクとして挿入されます。 メール リンクを削除する方法を紹介します 7 の Excel で 1

  2. 匿名でメールを送信する方法

    市場には、Gmail、Outlook、Yahoo! などの機能豊富な電子メール クライアントがたくさんあります。メールは、最も評判の良いインターネット企業の一部が所有しています。多くのユーザーは、オンライン プライバシーに関していまだに安全を感じていません。これらのプラットフォームはすべて、ユーザーをスパイしてユーザーの行動を見つけ出し、他のオンライン アクティビティを追跡しようとするためです。 私たちは通常、双方向のコミュニケーションに電子メールを使用しますが、特定されずに電子メールを送受信する必要があると感じる場合があり、その理由は完全に正当です. プライバシーが好きなだけかもしれません