• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルからメールを自動発行させたい。)

エクセルからメールを自動発行する方法

このQ&Aのポイント
  • エクセル2010を使用して、A列にメールアドレスが入ったシートがあり、B列には数値、C列には合格または不合格という値が入っています。この状況で、定型メールを自動的に発行する方法を知りたいです。
  • まず、点数を通知し、合否が確定した段階で合格者にだけ定型メールを送付したいです。さらに、合否によって異なるメールを自動的に送付する方法も知りたいです。
  • 全員の点数が入力されたら、上位15人までに合格という値を自動入力し、それ以外は不合格という値を自動入力する条件設定をしたいです。この設定をVBAを使用せずに行う方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.3

回答No.1です。 「CreateObject」で扱えるのは、オフィスだけ(正確には「だけ」ではありませんが)なのです。 従って、 Set w = CreateObject("Word.Application") とすれば、ワードを扱えます。 「Outlook」は、オフィスの中の製品なので、「VBA」で比較的簡単に操作できますが、「Windows Live Mail」はこのやり方では、ダメです。 申し訳ありませんが、私は、知りません。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • 3620313
  • ベストアンサー率33% (4/12)
回答No.2

excelからメール送信するのにbasp21というソフトを使用します。 ライセンスフリーでネットからダウンロードできるのでインストールしてください。 mail1が点数通知用 mail2が合否通知用 です。 Server = "mail.jp.****.com" は、SMTP送信に入っているアドレスです。 MailFrom = "****@****" ''メールの差出し人 の部分に自分のメールアドレスを設定です。 A列の宛先アドレスも、最初は自分のメールアドレスを入れておくと、自分宛にメールが来るので、内容の確認出来ます。 Sub mail1() '点数メール送信 '尚、このマクロを有効にするにはbasp21.exeのインストールが必要 Dim bobj, msg As String Dim Server As String, Mailto As String, MailFrom As String, Subject As String, Body As String Sheets("メール送信").Select For i = 1 To Range("A1").End(xlDown).Row Set bobj = CreateObject("basp21") ''BASP21オブジェクト Server = "mail.jp.****.com" ''SMTPサーバー Mailto = Cells(i, 1) ''メールの宛先 MailFrom = "****@****" ''メールの差出し人 Subject = "【点数のお知らせです】" ''メール送信タイトル Point = Cells(i, 2) ''点数 Body = "点数のお知らせです" & vbCrLf & Point & "点でした" & vbCrLf & "確認ください。" ''メール本文 msg = bobj.SendMail(Server, Mailto, MailFrom, Subject, Body, "") Set bobj = Nothing Next End Sub Sub mail2() '合否メール送信 '尚、このマクロを有効にするにはbasp21.exeのインストールが必要 Dim bobj, msg As String Dim Server As String, Mailto As String, MailFrom As String, Subject As String, Body As String Sheets("メール送信").Select For i = 1 To Range("A1").End(xlDown).Row Set bobj = CreateObject("basp21") ''BASP21オブジェクト Server = "mail.jp.****.com" ''SMTPサーバー Mailto = Cells(i, 1) ''メールの宛先 MailFrom = "****@****"" ''メールの差出し人" Subject = "【合否結果の連絡です】" ''メール送信タイトル Select Case Cells(i, 3) Case "合格" Body = "合格です" & vbCrLf & "おめでとうございます" & vbCrLf & "確認ください。" ''メール本文 msg = bobj.SendMail(Server, Mailto, MailFrom, Subject, Body, "") Set bobj = Nothing Case "不合格" Body = "不合格です" & vbCrLf & "残念でした" & vbCrLf & "確認ください。" ''メール本文 msg = bobj.SendMail(Server, Mailto, MailFrom, Subject, Body, "") Set bobj = Nothing End Select Next End Sub 私もexcelからメール送信やってて、参考になればです。

akira0723
質問者

お礼

ご丁寧が回答内容に感謝いたします。 ありがとうございました。

akira0723
質問者

補足

ご回答ありがとうございました。 そういうソフトがあるのですね。 慣れればおそらく使いやすそうな感じがしますし、実際のプログラムまでご丁寧に教えていただき大感謝です。 しかし、会社のPCには原則としてアプリの導入は禁止されており、どうしても必要な場合はシステムの許可が必要で、基本NGです。 残念ですが・・・ でもこのようなソフトがあることを知ったので参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.1

まず、メールアドレスなどのデータの入っているエクセルファイルを開いて、「Alt+F11」(「Alt」(「オルト」と読みます)キーを押しながら、「F11」キーを押す)で、「Visual Basic」の画面を出します。 メニューの「挿入」から「標準モジュール」を選択すると、画面の右側が白くなりますから、その白くなった部分に、以下のマクロをコピー&ペーストしてください。 エクセルの画面にもどって、「F12」(「名前を付けて保存」)で、ファイル名が表示されている1行下、右端の「∨」をクリックして、「Excel マクロ有効ブック」を選択して、保存しておいてください。 「Visual Basic」の画面にもどって、「F5」を押して、実行するのですが、今のところは、全く、質問者のご希望どおりではありません。 あくまでも、「Outlook」を使って、エクセルの「VBA」でメールを送信する方法です。 Sub Test() For i = 1 To Range("A1").End(xlDown).Row Set o = CreateObject("Outlook.Application") Set m = o.CreateItem(0) m.To = Cells(i, 1).Value m.Subject = Cells(i, 2).Value m.Body = Cells(i, 3).Value m.Attachments.Add (Cells(i, 4).Value & "\" & Cells(i, 5).Value) m.Send Set m = Nothing Set o = Nothing Next i 簡単な説明です。 For i = 1 To Range("A1").End(xlDown).Row 1行目から、列「A」について、データの入っている最終行までを処理しますが、このときの「最終行」とは、列「A」の途中に空白セルがあった場合、その1行上が空白セルとされます。 Set o = CreateObject("Outlook.Application") 「Outlook」を扱えるようにしています。 Set m = o.CreateItem(0) メールの機能を使えるようにしています。 m.To = Cells(i, 1).Value 「i」行目、1番目の列(=列「A」)の値を、「送信先」にセット。 m.Subject = Cells(i, 2).Value 同じく、2番目の列(=列「B」)の値を、「件名」にセット。 m.Body = Cells(i, 3).Value 同じく、3番目の列(=列「C」)の値を、「本文」にセット。 m.Attachments.Add (Cells(i, 4).Value & "\" & Cells(i, 5).Value) これは、添付ファイルですので、質問者の内容から考えて、必要のない行ですが、一応、念のためおいておきます。 4番目の列(=列「D」)と5番目の列(=列「E」)を、「\」で足しています。 何をしているかというと、列「D」には、フォルダ名が入っていて、列「E」には、実際に添付するファイル名が入っていることを想定しています。 m.Send メールを送っています。 Set m = Nothing Set o = Nothing 終了処理です。 を、繰り返しています。 したがって、「件名」や「本文」の入っている列などを上の例にならって、設定してください。

akira0723
質問者

補足

早々にマクロを解説付きで紹介、おまけに添付ファイルの事まで考慮されている(これも聞きたかったが厚かましいと遠慮)ので、俄然やる気が起きました。 何とか頑張ってみます。 ちなみに質問で抜けてしまって、後追いで補足しようとしたのですがNET環境が悪くついそのままになってしまっていましたが、メールソフトはWindows Live メールなのですが、"Windows Live Mail.Application"で行けるのでしょうか? 不明ならOUTLOOKも使えるので問題ないのですが。 アカウントが違っているのでどちらが良いか選択したいので。 却って違う方が使い分けできるのかも?という気もしますし。。。。

すると、全ての回答が全文表示されます。

関連するQ&A