Excel VBAを使用した社員の評価フィードバックメールの自動送信方法

この記事では、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講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次