Excel VBAで資格の更新日リマインダーを作成する方法

ExcelのVBAを使用して、資格の更新日をリマインダーする機能を構築する方法を詳しく解説します。Excelのシートに資格の更新日を記載し、その日が近づいたら自動で通知を受け取ることができるようになります。具体的なコード例、その詳細解説、応用例を含めています。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本のコード

資格の更新日をリマインドする基本的なVBAコードを以下に示します。


Sub Reminder()
    Dim LastRow As Long
    Dim i As Long
    Dim ReminderDate As Date
    Dim TodayDate As Date
    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row
    TodayDate = Date
    For i = 2 To LastRow
        ReminderDate = ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value
        If ReminderDate - TodayDate <= 7 And ReminderDate - TodayDate > 0 Then
            MsgBox "資格 " & ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value & " の更新日が " & ReminderDate - TodayDate & " 日後です。"
        End If
    Next i
End Sub

コードの解説

1. LastRowはシート内の最後の行番号を取得します。
2. TodayDateは現在の日付を取得します。
3. Forループを使用して、各資格の更新日を確認します。
4. 更新日が7日以内である場合、MsgBoxを使用してリマインダーメッセージを表示します。

応用例

応用1: リマインダーメールを送信する

Outlookを使用して、更新日が近い資格に関するリマインダーメールを自動送信する方法を説明します。


Sub SendEmailReminder()
    ' ... [基本的なコードの初め部分は同じ]
    Dim OutApp As Object
    Dim OutMail As Object
    Dim MailBody As String
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    ' ... [Forループの開始]
        If ReminderDate - TodayDate <= 7 And ReminderDate - TodayDate > 0 Then
            MailBody = "資格 " & ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value & " の更新日が " & ReminderDate - TodayDate & " 日後です。"
            With OutMail
                .To = "your-email@example.com"
                .Subject = "資格更新リマインダー"
                .Body = MailBody
                .Send
            End With
        End If
    ' ... [Forループの終了]
    
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

解説

Outlookのオブジェクトを利用して、メールを自動で送信します。メールの宛先、件名、本文を適切に設定してください。

応用2: 更新日が過ぎた資格をハイライトする

資格の更新日が過ぎた行を赤色でハイライトする方法を説明します。


Sub HighlightExpired()
    ' ... [基本的なコードの初め部分は同じ]

    For i = 2 To LastRow
        ReminderDate = ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value

        If TodayDate > ReminderDate Then
            ThisWorkbook.Sheets("Sheet1").Rows(i).Interior.Color = RGB(255, 0, 0)
        End If
    Next i
End Sub

解説

更新日が今日の日付を超えている場合、その行の背景色を赤色に変更します。

応用3: 更新日までの残り日数を新しい列に表示する

資格の更新日までの残り日数を新しい列に表示する方法を説明します。


Sub ShowRemainingDays()
    ' ... [基本的なコードの初め部分は同じ]

    For i = 2 To LastRow
        ReminderDate = ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value
        ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value = ReminderDate - TodayDate
    Next i
End Sub

解説

新しい列(C列)に、資格の更新日までの残り日数を表示します。

まとめ

ExcelのVBAを使って資格の更新日のリマインダーを作成する方法を解説しました。基本的なリマインダー機能から、メールでの通知、期限切れのハイライト、残り日数の表示など、さまざまな応用例を紹介しました。この機能を使用して、資格の更新を逃さず管理することができます。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

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

コメント

コメントする

目次