Excel VBAで「年次休暇・有給取得状況報告書」を自動生成する方法

Excel VBAを利用して「年次休暇・有給取得状況報告書」を自動生成する方法を解説します。ExcelのVBA機能を活用することで、手動での作業時間を大幅に短縮することができます。この記事では、基本的なコードから、さまざまな応用例までを取り上げます。

目次

Excel VBAの基本

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

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

基本的なコードの概要

年次休暇・有給取得状況報告書を作成するための基本的なVBAコードを示します。


Sub 有給取得状況報告書作成()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("報告書")
    
    ' タイトルの挿入
    ws.Cells(1, 1).Value = "年次休暇・有給取得状況報告書"
    
    ' ヘッダーの挿入
    ws.Cells(3, 1).Value = "氏名"
    ws.Cells(3, 2).Value = "取得日"
    ws.Cells(3, 3).Value = "取得日数"
    
    ' 以下、データの挿入と書式設定のコード

End Sub

このコードは、”報告書”という名前のワークシートに報告書のタイトルとヘッダーを挿入する基本的な処理を示しています。

コードの詳細解説

1. `Dim ws As Worksheet`: Worksheetオブジェクトとしてwsを定義します。
2. `Set ws = ThisWorkbook.Worksheets(“報告書”)`: “報告書”というワークシートをwsにセットします。
3. `ws.Cells(1, 1).Value = “年次休暇・有給取得状況報告書”`: タイトルを挿入します。
4. ヘッダー部分も同様の方法で挿入します。

応用例

1. データの自動入力

有給休暇の取得状況を自動で入力するコードを示します。


Sub データ自動入力()

    Dim ws As Worksheet
    Dim LastRow As Long
    Set ws = ThisWorkbook.Worksheets("報告書")

    ' 最後の行を取得
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' データの自動入力
    ws.Cells(LastRow + 1, 1).Value = "田中太郎"
    ws.Cells(LastRow + 1, 2).Value = Date
    ws.Cells(LastRow + 1, 3).Value = 1

End Sub

2. データの集計

有給休暇の取得日数を集計するコードを示します。


Sub 有給取得日数集計()

    Dim ws As Worksheet
    Dim LastRow As Long
    Dim TotalDays As Double

    Set ws = ThisWorkbook.Worksheets("報告書")
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' 日数の集計
    TotalDays = Application.WorksheetFunction.Sum(ws.Range("C4:C" & LastRow))
    ws.Cells(LastRow + 2, 2).Value = "合計取得日数"
    ws.Cells(LastRow + 2, 3).Value = TotalDays

End Sub

3. レポートの書式設定

報告書の見た目を整えるコードを示します。


Sub 書式設定()

    Dim ws As Worksheet
    Dim LastRow As Long

    Set ws = ThisWorkbook.Worksheets("報告書")
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' タイトルの書式設定
    With ws.Cells(1, 1).Font
        .Size = 16
        .Bold = True
    End With

    ' ヘッダーの書式設定
    With ws.Range("A3:C3").Font
        .Bold = True
    End With

    ' 罫線の追加
    ws.Range("A3:C" & LastRow).Borders.LineStyle = xlContinuous

End Sub

まとめ

Excel VBAを使うことで「年次休暇・有給取得状況報告書」の作成が効率的に行えることを示しました。基本のコードから、データの入力、集計、書式設定といった応用例まで、Excel VBAの可能性を最大限に活用しましょう。

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

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

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

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

コメント

コメントする

目次