Excel VBAを使った新しいソフトウェアのトレーニング日リマインダー設定方法

Excel VBAを活用することで、多様な処理や自動化を実現できます。この記事では、Excel VBAを利用して新しいソフトウェアのトレーニング日をリマインドする処理について詳しく解説します。具体的なコード例とその詳細解説、さらに実践的な応用例を通して、Excel VBAの使い方を深掘りしていきます。

目次

Excel VBAの基本

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

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

Excel VBAによるトレーニング日リマインダーの基本

Excelのワークシートにトレーニング日をリストアップし、その日が近づくと自動的にリマインダーを表示するプログラムを作成します。


Sub TrainingReminder()
    Dim LastRow As Long
    Dim i As Long
    Dim TodayDate As Date
    Dim TrainingDate As Date

    TodayDate = Date
    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row

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

        If TrainingDate - TodayDate = 1 Then
            MsgBox "明日は" & ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value & "のトレーニング日です!", vbInformation, "リマインダー"
        End If
    Next i
End Sub

コードの解説

このコードは、シートのA列にトレーニングの日付、B列にトレーニング名が記載されているものとします。

1. `LastRow`でシートの最終行を取得。
2. 現在の日付を`TodayDate`に格納。
3. A列の日付をループで取得し、その日付と今日の日付との差が1日だった場合(つまり、トレーニングが明日の場合)、B列のトレーニング名とともにメッセージボックスでリマインダーを表示します。

応用例

Excel VBAの処理は非常に柔軟であり、さまざまな応用が考えられます。以下は、上記の基本的なリマインダー機能を応用した例をいくつか紹介します。

応用例1: リマインダーの日数を変更

トレーニングの3日前や一週間前など、任意の日数前にリマインダーを表示することも可能です。


If TrainingDate - TodayDate = 3 Then
    MsgBox "3日後は" & ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value & "のトレーニング日です!", vbInformation, "リマインダー"
End If

応用例2: 複数のリマインダー設定

1日前、3日前、1週間前と、複数のリマインダーを設定することもできます。


If TrainingDate - TodayDate = 1 Or TrainingDate - TodayDate = 3 Or TrainingDate - TodayDate = 7 Then
    MsgBox TrainingDate - TodayDate & "日後は" & ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value & "のトレーニング日です!", vbInformation, "リマインダー"
End If

応用例3: メールでのリマインダー通知

Outlookを活用して、リマインダーをメールで受け取ることも可能です。

Outlookへの参照設定が必要

VBAエディタの「参照設定」から「Microsoft Outlook x.x Object Library」を追加する必要があります。


Sub MailReminder()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim TrainingDate As Date
    Dim TodayDate As Date
    Dim LastRow As Long
    Dim i As Long

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    TodayDate = Date
    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row

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

        If TrainingDate - TodayDate = 1 Then
            With OutMail
                .To = "yourmail@example.com"
                .Subject = "トレーニングリマインダー"
                .Body = "明日は" & ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value & "のトレーニング日です!"
                .Send
            End With
        End If
    Next i

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

まとめ

Excel VBAを用いてトレーニング日のリマインダーを設定する方法について、基本的な方法から応用例までを解説しました。日常業務での繁重な作業をExcel VBAを使って効率化し、業務の質を向上させることができます。

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

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

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

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

コメント

コメントする

目次