この記事では、Excel VBAを用いて社員への評価フィードバックメールを自動で送信する処理の方法について詳しく解説します。VBAのコードを実際に書き、その詳細な解説や応用例を通して、メール送信の自動化を効率的に行う方法を学びます。
Excel VBAの基本
Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。
そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。
基本的な評価フィードバックメールの送信処理
Sub SendFeedbackEmail()
Dim OutApp As Object
Dim OutMail As Object
Dim rng As Range
Dim cell As Range
' Outlook Applicationの起動
Set OutApp = CreateObject("Outlook.Application")
' Excelのシートを指定
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
' 各セルごとに処理
For Each cell In rng
' Outlook Mailの設定
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = cell.Value
.Subject = "評価フィードバック"
.Body = "こちらは評価フィードバックメールです。" & vbCrLf & "評価内容をご確認ください。"
.Send
End With
Next cell
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
コードの詳細解説
– 最初にOutlook Applicationのオブジェクトを生成します。
– ExcelのSheet1のA列のアドレスを変数rngにセットしています。このA列にはメールアドレスが記入されているものとします。
– For Each文で、A列の各セルのメールアドレスを読み取り、Outlookでメールを作成して送信します。
– メールの宛先、件名、本文などは.OutMail内で指定しています。
応用例1:評価スコアを本文に含める
Sub SendFeedbackWithScore()
Dim OutApp As Object
Dim OutMail As Object
Dim rng As Range
Dim cell As Range
' Outlook Applicationの起動
Set OutApp = CreateObject("Outlook.Application")
' Excelのシートを指定
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
' 各セルごとに処理
For Each cell In rng
' Outlook Mailの設定
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = cell.Value
.Subject = "評価フィードバック"
.Body = "あなたの評価スコアは " & cell.Offset(0, 1).Value & " です。" & vbCrLf & "評価内容をご確認ください。"
.Send
End With
Next cell
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
解説
– 前の例と同じく、Outlook Applicationのオブジェクトを生成します。
– ExcelのSheet1のA列のアドレスとB列のスコアを読み取ります。
– A列にはメールアドレス、B列にはスコアが入力されているものとします。
応用例2:評価カテゴリ別にメールを送る
'(中略)
' Excelのシートを指定
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
' 各セルごとに処理
For Each cell In rng
' Outlook Mailの設定
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = cell.Value
.Subject = "評価フィードバック - " & cell.Offset(0, 2).Value
.Body = "あなたの評価スコアは " & cell.Offset(0, 1).Value & " です。" & vbCrLf & "評価内容をご確認ください。"
.Send
End With
Next cell
'(中略)
解説
– A列にはメールアドレス、B列にはスコア、C列には評価カテゴリが入力されているものとします。
応用例3:複数の評価フィードバックを一度に送る
'(中略)
' Excelのシートを指定
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
' 各セルごとに処理
For Each cell In rng
' Outlook Mailの設定
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = cell.Value
.Subject = "評価フィードバック - " & cell.Offset(0, 2).Value
.Body = "あなたの評価スコアは " & cell.Offset(0, 1).Value & " です。" & vbCrLf & _
"また、" & cell.Offset(0, 3).Value & " カテゴリでのスコアは " & cell.Offset(0, 4).Value & " です。" & vbCrLf & _
"詳細な評価内容をご確認ください。"
.Send
End With
Next cell
'(中略)
解説
– A列にはメールアドレス、B列にはスコア、C列には評価
カテゴリ1、D列には評価カテゴリ2、E列にはスコア2が入力されているものとします。
まとめ
Excel VBAを活用することで、社員の評価フィードバックメールを簡単に自動送信することが可能です。基本的なコードから応用的な例まで、さまざまなシチュエーションに合わせてカスタマイズして使用することができます。
VBAも良いけどパワークエリも良い
VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。
クリックするとパワークエリの全11講座が表示されます。
-
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
-
【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)
-
【総力特集】パワークエリで列操作をマスター:選択、変更、移動、削除、結合、分割の詳細解説&実践テクニック!(3/11)
-
【徹底解説】パワークエリで行操作をマスター!フィルター・保持・削除テクニックと練習用エクセルで実践学習(4/11)
-
パワークエリでデータクレンジング: 文字列結合、0埋め、テキスト関数をマスター(5/11)
-
パワークエリで四捨五入、切り捨て、切り上げをマスターする方法(6/11)
-
パワークエリで効率的なデータグループ化を実現する方法(7/11)
-
パワークエリで時間と日付の計算をマスター!便利な関数を使って効率アップ(8/11)
-
パワークエリで条件別集計をマスターする方法(9/11)
-
Excelパワークエリでクロス集計表とデータベース形式を瞬時に変換する方法(10/11)
-
Excelパワークエリ入門: 効率的なデータ整理をマスターしよう!(11/11)
パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください
コメント