MEDIA

メディア

  1. TOP
  2. メディア
  3. プログラミング
  4. 【現場で使えるVBA】Excelでシートを一括追加!テスト業務を効率化するマクロ活用術

【現場で使えるVBA】Excelでシートを一括追加!テスト業務を効率化するマクロ活用術

はじめに

テストエンジニアや品質保証の現場では、Excelを使ったエビデンス管理が欠かせません。テストケースごとに1枚ずつシートを作り、実行結果やスクリーンショットを貼り付ける運用をしているチームも多いはずです。

しかし、この「シートを手動で増やす」作業は単純ながら手間がかかり、枚数が増えるほどミスも発生しやすくなります。

そこで本記事では、指定した枚数のシートを一括で追加するVBAマクロを紹介します。導入が簡単で、現場ですぐ使える実践的な内容です。


なぜVBAを使うのか

VBA(Visual Basic for Applications)の強みは、Excelだけで完結できる点です。追加のインストールや権限申請が難しい環境でも、「マクロ有効ブック(.xlsm)」として共有するだけで自動化をチームに展開できます。

特に以下のような「決まった操作の繰り返し」に対して、VBAは有効です。

  • テストケースごとのシート作成
  • シート間の集計、確認結果の集約
  • 重要セルの強調表示(赤枠・背景色)
  • エビデンス画像の貼り付け位置の統一

こうした定型作業を自動化することで、担当者は「考えるべき作業」に時間を使えるようになります。


💻 現場でよくある課題

テスト案件によっては、数十〜数百のケースを1つのExcelファイルで管理します。その中で

  • シートをコピーして命名
  • 並び順を整える
  • 不足分を追加する

といった作業をすべて手動で行うと、30分〜1時間が平気で消えます。

さらに、手作業には以下のようなリスクがあります。

  • シート名のタイポ・重複
  • コピー漏れ・ケース抜け
  • 命名ルールが人によってバラバラ

これらはすべて、簡単なマクロで防げる問題です。


⚙️ コード例:指定数分シートを追加するマクロ(安定版)

以下は キャンセル対応つき/入力チェックつき/重複名防止つき の実務向け安定版です。

Sub AddSheets_Safe()
Dim i As Long
Dim sheetCount As Long
Dim baseName As String
Dim inputCount As Variant
Dim newName As String

' --- 枚数入力 ---
inputCount = InputBox("追加するシート枚数を入力してください。", "シート追加")

' キャンセル判定(空文字 "" が返る)
If inputCount = "" Then Exit Sub

' 数値が空 or 数値でない
If Trim(inputCount) = "" Then
MsgBox "枚数が入力されていません。", vbExclamation
Exit Sub
End If

If Not IsNumeric(inputCount) Then
MsgBox "数値を入力してください。", vbExclamation
Exit Sub
End If

sheetCount = CLng(inputCount)
If sheetCount <= 0 Then
MsgBox "1以上の数値を入力してください。", vbExclamation
Exit Sub
End If

' --- ベース名入力 ---
baseName = InputBox("追加するシート名のベースを入力してください。", "シート名設定", "TestSheet")

' キャンセル判定
If baseName = "" Then Exit Sub

If Trim(baseName) = "" Then
MsgBox "シート名が入力されていません。", vbExclamation
Exit Sub
End If

' --- シート追加 ---
For i = 1 To sheetCount

newName = baseName & "_" & i

' 重複名チェック
If SheetExists(newName) Then
MsgBox "シート名 """ & newName & """ は既に存在します。" & vbCrLf & _
"処理を中断します。", vbExclamation
Exit Sub
End If

Sheets.Add after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = newName
Next i

MsgBox sheetCount & " 枚のシートを追加しました。", vbInformation

End Sub

' --- シート存在チェック用関数 ---
Function SheetExists(sheetName As String) As Boolean
Dim s As Worksheet
SheetExists = False
For Each s In ThisWorkbook.Worksheets
If s.Name = sheetName Then
SheetExists = True
Exit Function
End If
Next s
End Function

 

コードのポイント解説

1. InputBoxで現場ごとの条件に対応

sheetCount と baseName を毎回入力できるため、

案件ごとに異なる命名ルールへ柔軟に対応できます。

2. シートは常に末尾に追加

Sheets.Add after:=Sheets(Sheets.Count) により、

既存シートを崩さず末尾に追加できます。

3. 連番付きで自動命名

「Case」と入力すれば「Case_1」「Case_2」…と自動生成。

手入力は不要です。

4. 安定性を大幅強化(新ポイント)

  • キャンセル対応
  • 空欄や文字列の排除
  • シート名重複チェック
  • 実行中断時のメッセージ表示

実務で使っても止まりにくい構成です。


実務での具体的な使い方

テストケース管理シート

1つのフォーマットシートを基準に、必要数を一気に生成。

命名ルールが統一され、レビューもスムーズになります。

日次・バッチごとのエビデンス管理

「Day」「Batch」などのベース名を使えば、

日付・バッチ単位での整理が簡単です。

再テスト・追試験用シートの追加

再テスト向けに数枚だけ追加したい場合も、瞬時に生成できます。


現場での運用のコツ

特におすすめなのは、このマクロを組み込んだ

「共通テンプレートブック(.xlsm)」をチーム共通で配布する運用 です。

  • 全員が同じ命名ルールで作業
  • シート構造が統一
  • ミス・抜け漏れの削減

さらに、マクロ実行前には バックアップを取る運用 も推奨します。


まとめ

項目 内容
マクロ名 AddSheets_Safe
目的 指定数分のシートを自動追加+連番命名
効果 作業時間短縮、命名ミス防止、運用ルール統一
利用シーン テストエビデンス管理、日次報告、バッチ検証、再テスト管理

小さな自動化でも、案件全体で見れば大きな時間削減につながります。

まずはこのマクロから導入し、徐々に「現場で本当に役立つVBA」を積み上げていきましょう。

Join us! 未経験からエンジニアに挑戦できる環境で自分の可能性を信じてみよう 採用ページを見る→

記事監修

ドライブライン編集部

[ この記事をシェアする ]

記事一覧へ戻る