Note: The other languages of the website are Google-translated. Back to English

Excelのセル値に基づいて電子メールを自動的に送信するにはどうすればよいですか?

Excelで指定されたセル値に基づいて、Outlookを介して特定の受信者に電子メールを送信するとします。 たとえば、ワークシートのセルD7の値が200より大きい場合、電子メールが自動的に作成されます。 この記事では、この問題をすばやく解決するためのVBAメソッドを紹介します。

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


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

Excelのセル値に基づいてメールを送信するには、次のようにしてください。

1.ワークシートで、セルの値(ここではセルD7と言います)に基づいて電子メールを送信する必要があります。シートタブを右クリックして、[ コードを表示 コンテキストメニューから。 スクリーンショットを参照してください:

2.ポップアップで アプリケーション向け Microsoft Visual Basic ウィンドウの場合は、以下のVBAコードをコピーしてシートコードウィンドウに貼り付けてください。

VBAコード:Excelのセル値に基づいてOutlook経由でメールを送信する

Dim xRg As Range
'Update by Extendoffice 2018/3/7
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("D7"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 200 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 there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
    On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "send by cell value test"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

免責事項:

1)。 VBAコードでは、 D7 及び 値> 200 は、メールを送信するセルとセルの値です。
2)。 必要に応じてメール本文を変更してください xMailBody コードの行。
3)。 メールアドレスを受信者のメールアドレスに置き換えます .To = "メールアドレス".
4)。 そして、必要に応じてCcとBccの受信者を指定します .CC =“” 及び Bcc =“” セクション。
5)。 最後に、メールの件名を次の行に変更します .Subject = "セル値テストで送信".

3。 プレス 他の + Q キーを一緒に閉じて アプリケーション向け Microsoft Visual Basic 窓。

今後、セルD7に入力する値が200を超えると、指定した受信者と本文を含む電子メールがOutlookに自動的に作成されます。 あなたはクリックすることができます 送信 このメールを送信するボタン。 スクリーンショットを参照してください:

免責事項:

1. VBAコードは、電子メールプログラムとしてOutlookを使用している場合にのみ機能します。

2.セルD7に入力されたデータがテキスト値の場合、電子メールウィンドウもポップアウトされます。


Excelで作成されたメーリングリストのフィールドに基づいて、Outlookを介して簡単に電子メールを送信します。

世界 メールを送る の有用性 Kutools for Excel Excelで作成されたメーリングリストに基づいてOutlookを介して電子メールを送信するユーザーを支援します。
今すぐダウンロードしてお試しください! (30日間の無料トレイル)


関連記事:


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

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300以上の強力な機能。 Office / Excel2007-2019および365をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 全機能30日間の無料トライアル。 60日間の返金保証。
kteタブ201905

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

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性が50%向上し、毎日何百ものマウスクリックが減ります。
officetab下部
コメントを並べ替える
コメント (290)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
セルの全範囲に適用するには、コードをどのように変更する必要がありますか?
このコメントは、サイトのモデレーターによって最小化されました
親愛なるデビー、
問題を解決するには、以下のVBAコードを試してください。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Target.Cells.Count> 1の場合、Subを終了します
If(Not Intersect(Target、Range( "A1:D4"))Is Nothing)And(Target.Value> 200)Then
Mail_small_Text_Outlookを呼び出す
終了する場合
End Subの
サブMail_small_Text_Outlook()
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xMailBody = "こんにちは"&vbNewLine&vbNewLine&_
「これは1行目です」&vbNewLine&_
「これは2行目です」
エラーで次の再開
xOutMailを使用
.To="受信者のメールアドレス"
.CC = ""
.BCC = ""
.Subject = "セル値テストで送信"
.Body = xMailBody
.Display'または.Sendを使用します
最後に
エラー時GoTo0
xOutMail=Nothingを設定します
xOutApp=Nothingを設定します
End Subの
このコメントは、サイトのモデレーターによって最小化されました
セルの値が間接的に変更された場合に、このコードでプロンプトを表示するのに問題があります。 たとえば、和分方程式でこの値を自動的に変更する場合です。 方程式が実行され、値が設定値を超えて電子メールを表示する場合、自分で数値を物理的に変更しない限り、そうはなりません。 間接的に変更された場合でもメールプロンプトを作成する方法はありますか?
このコメントは、サイトのモデレーターによって最小化されました
親愛なるジョーダン、
次のVBAコードは、問題の解決に役立ちます。 コード内の「Eメールアドレス」を受信者のEメールアドレスに置き換えることを忘れないでください。 ありがとうございました。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
範囲としての薄暗いxRgPre
エラーで次の再開
Target.Cells.Count> 1の場合、Subを終了します
xRg = Range( "D7")を設定します
xRgPre=xRg.Precedentsを設定します
xRg.Value>200の場合
Target.Address =xRg.AddressThenの場合
Mail_small_Text_Outlookを呼び出す
ElseIf(Not xRgPre Is Nothing)And(Intersect(Target、xRgPre).Address = Target.Address)Then
Mail_small_Text_Outlookを呼び出す
終了する場合
終了する場合
End Subの
サブMail_small_Text_Outlook()
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xMailBody = "こんにちは"&vbNewLine&vbNewLine&_
「これは1行目です」&vbNewLine&_
「これは2行目です」
エラーで次の再開
xOutMailを使用
.To = "メールアドレス"
.CC = ""
.BCC = ""
.Subject = "セル値テストで送信"
.Body = xMailBody
.Display'または.Sendを使用します
最後に
エラー時GoTo0
xOutMail=Nothingを設定します
xOutApp=Nothingを設定します
End Subの
このコメントは、サイトのモデレーターによって最小化されました
提案されたコードを変更して、アプリケーションで機能するようにしました。
xRg = Range( "C2:C40")およびIf xRg.Value=-1を変更しました。

私が抱えている問題は、任意のセルに変更があるときはいつでも、私の範囲内のセルの1つが= -XNUMXである限り、Mail_small_Text_Outlookを呼び出すことです。
範囲内のいずれかのセルが間接的に-1に変更された場合にのみ呼び出しようとしています。
また、XNUMXつの基準を満たすことができるかどうか、そしてどのようにできるのか疑問に思いました。
チェック範囲Aと範囲Bのように、それらが基準を満たすかどうかは関数を呼び出します。

助けてくれてありがとう。 私はこれらすべてに不慣れですが、このスレッドを読むと、約90%がそこにあります。


プライベートサブワークシート_Change(ByValターゲットを範囲として)
範囲としての薄暗いxRgPre
エラーで次の再開
Target.Cells.Count> 1の場合、Subを終了します
xRg = Range( "C2:C40")を設定します
xRgPre=xRg.Precedentsを設定します
xRg.Value=-1の場合
Target.Address =xRg.AddressThenの場合
Mail_small_Text_Outlookを呼び出す
ElseIf(Not xRgPre Is Nothing)And(Intersect(Target、xRgPre).Address = Target.Address)Then
Mail_small_Text_Outlookを呼び出す
終了する場合
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
このコードを使用したのは、列全体に適用したことだけです[Set xRg = Range( "D4:D13")]。 これで、列Dのバルブが目標値を下回っているかどうかに関係なく、計算が行われるたびにイベントがトリガーされます。 それがなぜなのか、何か考えはありますか?


範囲として薄暗いXrg
プライベートサブワークシート_Change(ByValターゲットを範囲として)
範囲としての薄暗いxRgPre
エラーで次の再開
Target.Cells.Count> 1の場合、Subを終了します
Xrg = Range( "D4:D13")を設定します
xRgPre=Xrg.Precedentsを設定します
Xrg.Value<1200の場合Then
Target.Address =Xrg.AddressThenの場合
Mail_small_Text_Outlookを呼び出す
ElseIf(Not xRgPre Is Nothing)And(Intersect(Target、xRgPre).Address = Target.Address)Then
Mail_small_Text_Outlookを呼び出す
終了する場合
終了する場合
End Subの

サブMail_small_Text_Outlook()
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xMailBody = "Hi"&vbNewLine&_
"テストvba"_
&vbNewLine&_
"2行目。"
エラーで次の再開
xOutMailを使用
.To = ""
.CC = ""
.BCC = ""
.Subject="自動メールテスト"
.Body = xMailBody
。表示
最後に
エラー時GoTo0
xOutMail=Nothingを設定します
xOutApp=Nothingを設定します

End Subの


ありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは

メールの受信者をXNUMXつずつ何度も追加する必要があるため、問題が発生しています。 電子メール受信者のリストをこの関数に追加できるかどうかをガイドしてください。この関数は、提供された電子メールアドレスのリストまたはリストのアップロードから電子メールアドレスを選択し、関数はすでに作成された電子メールを目的の受信者に送信します。
このコメントは、サイトのモデレーターによって最小化されました
親愛なるヘンリー、
次のVBAコードは、問題の解決に役立ちます。 VBAスクリプトをワークシートモジュールに配置してください。 指定したセルの値が条件を満たしている場合、Kutools for Excelダイアログボックスが表示されます。受信者のメールアドレスを含むセルを選択し、[OK]ボタンをクリックしてください。 次に、指定された受信者の電子メールが開きます。 必要に応じて送ってください。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Target.Cells.Count> 1の場合、Subを終了します
xRg = Range( "D7")を設定します
xRg = Target AndTarget.Value>200の場合Then
Mail_small_Text_Outlookを呼び出す
終了する場合
End Subの
サブMail_small_Text_Outlook()
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
範囲としての薄暗いxRgMsg
xCellAsRangeを暗くする
Set xRgMsg = Application.InputBox( "アドレスセルを選択してください:"、 "Kutools for Excel" 、、、、、、、 8)
xMailBody = "こんにちは"&vbNewLine&vbNewLine&_
「これは1行目です」&vbNewLine&_
「これは2行目です」
エラーで次の再開
xRgMsgの各xCellについて
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xOutMailを使用
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "セル値テストで送信"
.Body = xMailBody
.Display'または.Sendを使用します
最後に
xOutApp=なし
xOutMail=なし

エラー時GoTo0
End Subの
このコメントは、サイトのモデレーターによって最小化されました
手動で中断することなく、自動的にメールで送信されますか
このコメントは、サイトのモデレーターによって最小化されました
親愛なる梵天、
表示せずに直接メールを送信する場合は、上記のVBAコードの「.Display」の行を「.Send」に置き換えてください。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは私は同じスクリプトを入れましたが、それは機能していません最初の部分で私を助けてください

範囲としての薄暗いxRg

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Target.Cells.Count> 1の場合、Subを終了します
xRg = Range( "D7")を設定します
xRg = Target And Target.Value=200の場合
Mail_small_Text_Outlookを呼び出す
終了する場合

End Subの
このコメントは、サイトのモデレーターによって最小化されました
親愛なるバジル、
コードの実行時に警告はありますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、このコードをどのように変更して、セルのグループに「一致なし」という文字列があるかどうかを確認し、ある場合はメールを送信します。
このコメントは、サイトのモデレーターによって最小化されました
親愛なるホセ、
以下のVBAコードをお試しください。 コードを実行すると、ダイアログボックスが表示されます。文字列をチェックする範囲を選択し、[OK]ボタンをクリックしてください。 文字列が存在しない場合は、プロンプトダイアログボックスが表示されます。 文字列が範囲内に存在する場合、受信者、件名、本文が指定された電子メールが表示されます。

サブSendEmail()
薄暗い私は長く
ディム J アズ ロング
範囲としての薄暗いxRg
薄暗いxArr
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
Dim xFlag As Boolean
エラーで次の再開
Set xRg = Application.InputBox( "範囲を選択してください"、 "Kutools for Excel"、Selection.Address 、、、、、 8)
xRgが何もない場合は、Subを終了します
xArr = xRg.Value
xFlag = False
I = 1の場合UBound(xArr)へ
J = 1の場合UBound(xArr、2)
xArr(I、J)= "No Match"の場合、
xFlag = 真
終了する場合


xFlagの場合
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xMailBody = "こんにちは"&vbNewLine&vbNewLine&_
「これは1行目です」&vbNewLine&_
「これは2行目です」
xOutMailを使用
.To="メールアドレス"
.CC = ""
.BCC = ""
.Subject="一致"
.Body = xMailBody
.Display'または.Sendを使用します
最後に

MsgBox「一致する値が見つかりません」、vbInformation、「KuToolsforExcel」
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
生徒の成績を保護者に送信するためにこのコードを変更するにはどうすればよいですか。 ここで、列Aが成績で、列Bが親の電子メールである場合。 各生徒のメールにFを成績として入力したいと思います。
このコメントは、サイトのモデレーターによって最小化されました
親愛なるフランク、
以下のVBAコードは、問題の解決に役立ちます。 ありがとうございました。

サブMail_small_Text_Outlook()
範囲としての薄暗いxRg
薄暗い私は長く
xRowsを長く暗くする
文字列としての薄暗いxVal
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
エラーで次の再開
Set xRg = Application.InputBox( "成績列とメール列(8列)を選択してください"、 "Kutools for Excel"、Selection.Address 、、、、、 XNUMX)
xRgが何もない場合は、Subを終了します
xRows = xRg.Rows.Count
xRg = xRg(2)に設定します
I=1の場合xRowsへ
xVal = xRg.Offset(I、-1).Text
xVal="F"の場合
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xMailBody = "こんにちは"&vbNewLine&vbNewLine&_
「これはあなたの子供の成績です」&xRg.Offset(I、-1).Text
xOutMailを使用
.to = xRg.Offset(I、0).Text
.Subject = "セル値テストで送信"
.Body = xMailBody
.Display'または.Sendを使用します
最後に
エラー時GoTo0
xOutMail=Nothingを設定します
xOutApp=Nothingを設定します
終了する場合

End Subの
このコメントは、サイトのモデレーターによって最小化されました
すでにExcelファイルに電子メールアドレスのリストがありますが、セルD7が200を超える場合に、その人の電子メールアドレスを自動的に選択するようにコードを変更するにはどうすればよいですか?
このコメントは、サイトのモデレーターによって最小化されました
グッド·デイ、
次のVBAコードは、問題の解決に役立ちます。 VBAスクリプトをワークシートモジュールに配置してください。 指定したセルの値が条件を満たしている場合、Kutools for Excelダイアログボックスが表示されます。受信者のメールアドレスを含むセルを選択し、[OK]ボタンをクリックしてください。 次に、指定された受信者の電子メールが開きます。 必要に応じて送ってください。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Target.Cells.Count> 1の場合、Subを終了します
xRg = Range( "D7")を設定します
xRg = Target AndTarget.Value>200の場合Then
Mail_small_Text_Outlookを呼び出す
終了する場合
End Subの
サブMail_small_Text_Outlook()
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
範囲としての薄暗いxRgMsg
xCellAsRangeを暗くする
Set xRgMsg = Application.InputBox( "アドレスセルを選択してください:"、 "Kutools for Excel" 、、、、、、、 8)
xMailBody = "こんにちは"&vbNewLine&vbNewLine&_
「これは1行目です」&vbNewLine&_
「これは2行目です」
エラーで次の再開
xRgMsgの各xCellについて
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xOutMailを使用
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "セル値テストで送信"
.Body = xMailBody
.Display'または.Sendを使用します
最後に
xOutApp=なし
xOutMail=なし

エラー時GoTo0
End Subの
このコメントは、サイトのモデレーターによって最小化されました
Outlookでメールを送信できません。 「プログラムがあなたに代わってメールを送信しようとしています。予期しない場合は、ウイルス対策ソフトウェアが最新であることを拒否して確認してください」というエラーが表示されます。
自動化できませんので、よろしくお願いします。
このコメントは、サイトのモデレーターによって最小化されました
申し訳ありませんがマヤンク、
私の場合、コードはうまく機能します。 「代理送信」機能に関する何かがOutlookで構成されているようです。 それを確認してください。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、月に200回(例に基づいて)XNUMXを超える量の果物のリストがあるか、(日付に基づいて)間もなく期限切れになる果物のリストを持っているマネージャーに電子メールを送信しようとしている場合、どのコードを使用しますか
このコメントは、サイトのモデレーターによって最小化されました
グッドデイ
この記事の「Excelで期日を過ぎた場合にメールを送信する方法」の方法かもしれません。 あなたを助けられる。
このリンクに従ってください: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
このコメントは、サイトのモデレーターによって最小化されました
セル内の日付に基づいてメールを送信するようにコードを編集するにはどうすればよいですか。 たとえば、15か月ごとにドキュメントをレビューする必要があり、12か月後に、ドキュメントをレビューする必要があることを示す電子メールアドレスに電子メールを送信したいとします。 .Displayを.Sendに変更してメールを自動送信できるようになりました。これは記述どおりに機能しますが、整数ではなく日付関数を使用するには何を変更する必要がありますか?
このコメントは、サイトのモデレーターによって最小化されました
「SetxRg=Range( "D7")」に複数の範囲を追加するにはどうすればよいですか。 編集してRange( "D7:F7")を追加したい。 ただし、Run Time Error 13、Type Mismatchのエラーが発生し、If xRg = Target And Target.Value>2Thenに移動します。


どうすればこの問題を解決できますか?
このコメントは、サイトのモデレーターによって最小化されました
グッド·デイ、
問題を解決するには、以下のVBAコードを試してください。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Target.Cells.Count> 1の場合、Subを終了します
If(Not Intersect(Target、Range( "D7:F7"))Is Nothing)And(Target.Value> 200)Then
Mail_small_Text_Outlookを呼び出す
終了する場合
End Subの
サブMail_small_Text_Outlook()
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xMailBody = "こんにちは"&vbNewLine&vbNewLine&_
「これは1行目です」&vbNewLine&_
「これは2行目です」
エラーで次の再開
xOutMailを使用
.To="受信者のメールアドレス"
.CC = ""
.BCC = ""
.Subject = "セル値テストで送信"
.Body = xMailBody
.Display'または.Sendを使用します
最後に
エラー時GoTo0
xOutMail=Nothingを設定します
xOutApp=Nothingを設定します
End Subの
このコメントは、サイトのモデレーターによって最小化されました
完全にうまくいきました..ありがとう..:):)
このコメントは、サイトのモデレーターによって最小化されました
D7の値は正式な結果であるため、機能していません。 セルD7に数式が含まれている場合、たとえばD7 = 2 * 120の場合はどうなりますか? それでも条件を満たしていますが、何も起きていません。 助けてください
このコメントは、サイトのモデレーターによって最小化されました
コードの実行を停止する方法、つまり条件が満たされないときに電子メールを表示しない方法は?

D7 <200の場合でも、メールの入力を求められます。
このコメントは、サイトのモデレーターによって最小化されました
グッド·デイ、
コードは、問題が解決された状態で投稿で更新されます。 コメントありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
Hi

このVBAコードと手順を投稿していただきありがとうございます。 それを見つけたとき、私は宝くじに当選したように感じました。 しかし、私は何かに固執しているので、あなたが助けてくれることを願っています(私はVBAに不慣れで、非常に基本的な理解しかありません)。

コードをコピーし、セルとセルの値を変更して、基準が満たされている場合に範囲から選択します。 私は試してテストしましたが、それは機能し、基準に基づいて見通しを立てるメールを受け取りました。

1)しかし、VBAアプリケーションをクリックして実行を選択するのではなく、Excelワークシートを開いたときにVBAコードを自動的に実行する方法を理解できないようです。 上記のVBAコードを入力するための追加のプロンプトがあり、これを実行するのか、それとも個別に実行する必要があるのか​​を教えてください。

2)以下の例に示すように、特定のアイテムの期日が「はい」の場合に、VBAコードを取得して人にメールを送信する方法もあります。
メールの隠し列
お名前

手順
手順1の期日はい
手順番号2期日なし

スプレッドシートには多数の人がいて(横に並んでいる)、さまざまな期限切れの手順で「はい」を強調表示できます(列Aに縦にリストされています。このようなもので実行されるVBAコードを作成する方法はありますか? 「個人1」に「はい」の場合は、「手順番号」(または番号)と期日を記載した「人1」に電子メールを送信します。すべての手順とその後の期日を電子メールに記載できるようにします。

その人のために延滞しているすべての文書と期日をメールで送信する限り、人ごとに個別のVBAコードを設定する必要があるかどうかは気になりません。

あなたが助けることができることを願っています
このコメントは、サイトのモデレーターによって最小化されました
愛するアン、
以下のVBAコードをお試しください。 コメントありがとうございます。

サブMail_small_Text_Outlook()
範囲としての薄暗いxRg
xCellAsRangeを暗くする
薄暗い私は長く
xRowsを長く暗くする
xColsを暗くする
文字列としての薄暗いxVal
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
エラーで次の再開
Set xRg = Application.InputBox( "範囲を選択すると、メールを送信するセルの値が含まれます:"、 "Kutools for Excel"、Selection.Address 、、、、、、 8)
xRgが何もない場合は、Subを終了します
xRows = xRg.Rows.Count
xCols = xRg.Columns.Count
I=1の場合xRowsへ
xCell = xRg(I、xCols)を設定します
xCell.Value="Yes"の場合Then
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xMailBody = "こんにちは"&vbNewLine&vbNewLine&_
"これはあなたの情報です:"&vbNewLine&xCell.Offset(0、-1).Text&vbNewLine&xCell.Offset(0、-2).Text
xOutMailを使用
.To = xCell.Offset(0、-4).Text
.Subject = "セル値テストで送信"
.Body = xMailBody
.Display'または.Sendを使用します
最後に
エラー時GoTo0
xOutMail=Nothingを設定します
xOutApp=Nothingを設定します
終了する場合

End Subの
このコメントは、サイトのモデレーターによって最小化されました
結晶、

これにより、次のコードが置き換えられます。

サブメール()

範囲としての薄暗いxRg

Dim xRgEach As Range

xEmail_Subject、xEmail_Send_Formなどを暗くします。
このコメントは、サイトのモデレーターによって最小化されました
このコードを正確にどこに挿入しますか?
このコメントは、サイトのモデレーターによって最小化されました
良い一日、
ワークシートのコードウィンドウにコードを配置する必要があります。
Microsoft Visual Basic for Applicationsウィンドウを開き、左側のペインのシート名をダブルクリックしてコードエディタを開きます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、


私は現在、このコーディングに少し問題があります(これは初めてです-噛むことができる以上に噛み付いた可能性があります)


私は現在、次のスプレッドシートを持っています。これは、私たちのビジネスのプロパティにある障害の自動化と電子メールの送信に役立つ必要があります


現在、次のデータを使用するコードが必要です。


1)アドレスと問題(((セルD2内)) "= = CONCAT(B1、" "C1、)"を介してマージされた1つの「一般的な」セル
B1のアドレスは常に同じになります(多かれ少なかれ)
C1は、プロパティの障害に応じて常に変化します。


2)同じメールアドレスで送信されるメール(たとえば、$ E $ 1を使用できますか、E1-E1を使用する必要があります)またはコード行に「TheEmailAdress@.co.uk」と入力するだけで済みます


3)ポイント1と同様の方法で入力される電子メール本文)......((セルF1内)) "= CONCAT(G1、" "、H1)
これらは、会社(G1)と彼らが行っていること、修正、引用(H1)を表すため、絶えず変化します。

4)メールを送信するトリガー、私は7番になり、シートは毎日更新されます(週7日)
そのため、7日目にメールを送信するためのトリガーが必要ですが、8日目、9日目、10日目以降は常に好きではありません。 1-6などの前ではなく、これはA4:A 100+になります(常に拡張しているため)


4)トリガーにリストを使用してメールを送信することについて言及した他のユーザーからの小さなスニペットを使用しましたが、100%正しいかどうかはわかりませんでしたが、すべてのCollumAをスキャンする必要があります... 。A4:A100
「47」のみを含む7個のセルがある場合、47個の電子メールが送信されます


読んでいただきありがとうございます。お役に立てば幸いです:)
このコメントは、サイトのモデレーターによって最小化されました
親愛なるマーティン、
申し訳ありませんがこれを助けることはできません。
あなたは私たちのフォーラムにあなたの質問を投稿することができます: https://www.extendoffice.com/forum.html 技術スタッフからより多くのExcelサポートを取得します。
コメントありがとうございます。

宜しくお願いします、
結晶
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、


列Lに追加された「完了」という単語に基づいて電子メールを送信したい場合はどうなりますか?
このコメントは、サイトのモデレーターによって最小化されました
親愛なるジェシー、
次のVBAコードは、問題の解決に役立ちます。 コメントありがとうございます。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Target.Cells.Count> 1の場合、Subを終了します
If(Not Intersect(Target、Range( "L:L"))Is Nothing)And(Target.Value = "completed")Then
Mail_small_Text_Outlookを呼び出す
終了する場合
End Subの
サブMail_small_Text_Outlook()
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xMailBody = "こんにちは"&vbNewLine&vbNewLine&_
「これは1行目です」&vbNewLine&_
「これは2行目です」
エラーで次の再開
xOutMailを使用
.To="受信者のメールアドレス"
.CC = ""
.BCC = ""
.Subject = "セル値テストで送信"
.Body = xMailBody
.Display'または.Sendを使用します
最後に
エラー時GoTo0
xOutMail=Nothingを設定します
xOutApp=Nothingを設定します
End Subの
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
範囲( "D7:F7")に貼り付けたデータに少なくとも1つのゼロまたは空白がある場合にのみ、Outlookをポップアウトしたいと思います。
'If Target.Cells.Count> 1 Then Exit Sub'行を削除しました。これで、値のグループをセルD7:F7に貼り付けると、Outlookが常に起動します。

ヘルプ。
このコメントは、サイトのモデレーターによって最小化されました
親愛なるヤン、
次のスクリプトは、問題の解決に役立ちます。 コメントありがとうございます。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
エラーで次の再開
Target.Address = Range( "D7:F7")。AddressThenの場合
Application.WorksheetFunctionを使用
If .CountIf(Target、 "")> 0または.CountIf(Target、0)> 0 Then
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xOutMailを使用
.To = "メールアドレス"
.CC = ""
.BCC = ""
.Subject = "セル値テストで送信"
.Body="こんにちは"
.Display'または.Sendを使用します
最後に
エラー時GoTo0
xOutMail=Nothingを設定します
xOutApp=Nothingを設定します
終了する場合
最後に
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
そこで、編集内容を使用してセル範囲を含めましたが、(ワークシートの例を使用している場合)果物の種類、日付、数量をワークシートからHTMLメールに追加する方法を考えていました。メールを生成します。 だからそれは言うだろう

"やあ、"

セルからの果物の名前「注文日現在:「セルからの注文日」この金額があります:」セルからの数量のため、バックオーダーする必要があります。
このコメントは、サイトのモデレーターによって最小化されました
こんにちはノエミ、
このVBAスクリプトを試してください。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
範囲としての薄暗いxRg
Dim I、J、K As Long
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
エラーで次の再開
Target.Address = Range( "D7")。AddressThenの場合
Application.WorksheetFunctionを使用
IsNumeric(Target.Value)AndTarget.Value>200の場合Then
Set xRg = Application.InputBox( "メール本文に表示するセル範囲を選択してください:"、 "KuTools for Excel"、Selection.Address 、、、、、、 8)
xRgが何もない場合は、Subを終了します
I=1の場合xRg.Rows.Countへ
J = 1の場合xRg.Rows(I).Columns.Countへ
K = 1の場合xRg.Rows(I).Columns(J).Countへ
xMailBody = xMailBody& ""&xRg.Rows(I).Columns(J).Cells(K).Text


xMailBody = xMailBody&vbNewLine

xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xOutMailを使用
.To = "メールアドレス"
.CC = ""
.BCC = ""
.Subject = "セル値テストで送信"
.Body = "こんにちは"&vbNewLine&xMailBody
.Display'または.Sendを使用します
最後に
エラー時GoTo0
xOutMail=Nothingを設定します
xOutApp=Nothingを設定します
終了する場合
最後に
終了する場合
End Subの
このコメントは、サイトのモデレーターによって最小化されました
こんにちはクリスタル
コードをありがとうございます。可能であれば、以下の詳細のコードを送信してください。

パスポートの有効期限、運転免許証の有効期限、車両登録の有効期限、ゲートパスの有効期限など、さまざまな種類の有効期限を使用する8〜9個の列がある場合、メールアラートは5人の指定された人にのみ送信する必要があります。

私たちの日付シートには300人以上の従業員がいるように、有効期限と有効期限は15日以内に赤い色で表示され、電子メールアラートを送信する必要があります。

親切に必要なことをしてください

前もって感謝します
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
「Excelで期日を過ぎたらメールを送るには?」という記事を掲載しました。
この記事に答えがあるかどうかを確認できます。 記事を開くには、次のリンクをたどってください。 https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
ありがとうございました。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは-コードに実際のメールアドレスを入れるのではなく、リストからメールを送信したい場合、それは可能ですか? ありがとう
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
以下のVBAコードを試してください。指定したセルが条件を満たしている場合、ダイアログがポップアップ表示されます。セルにメールを送信するメールアドレスが含まれていることを選択してください。 それがお役に立てば幸いです。 ありがとうございました。

プライベートサブワークシート_Change(ByValターゲットを範囲として)
Target.Cells.Count> 1の場合、Subを終了します
xRg = Range( "D7")を設定します
xRg = Target AndTarget.Value>200の場合Then
Mail_small_Text_Outlookを呼び出す
終了する場合
End Subの
サブMail_small_Text_Outlook()
オブジェクトとしての薄暗いxOutApp
xOutMailをオブジェクトとして薄暗くする
文字列としての薄暗いxMailBody
範囲としての薄暗いxRgMsg
xCellAsRangeを暗くする
Set xRgMsg = Application.InputBox( "アドレスセルを選択してください:"、 "Kutools for Excel" 、、、、、、、 8)
xMailBody = "こんにちは"&vbNewLine&vbNewLine&_
「これは1行目です」&vbNewLine&_
「これは2行目です」
エラーで次の再開
xRgMsgの各xCellについて
xOutApp = CreateObject( "Outlook.Application")を設定します
xOutMail = xOutApp.CreateItem(0)を設定します
xOutMailを使用
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "セル値テストで送信"
.Body = xMailBody
.Display'または.Sendを使用します
最後に
xOutApp=なし
xOutMail=なし

エラー時GoTo0
End Subの
ここにはまだコメントが投稿されていません
もっと読み込む
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所