【Excel】VBAでシートの追加・削除・名前変更・コピーをする方法

【Excel】VBAでシートの追加・削除・名前変更・コピーをする方法
🛡️ 超解決

Excelのシート操作は、手作業で行うと多くの時間を費やす場合があります。

VBAを利用すれば、シートの追加・削除・名前変更・コピーといった定型作業を自動化できます。

この記事では、これらのシート操作をVBAコードで実現する具体的な方法を解説します。

日常業務の効率化に役立つVBAの基本スキルを習得できるでしょう。

【要点】VBAでExcelシート操作を効率化する基本

  • シート追加: Worksheets.Addメソッドで新しいワークシートを作成できます。
  • シート削除: シートオブジェクトのDeleteメソッドで不要なワークシートを消去できます。
  • シート名前変更: シートオブジェクトのNameプロパティに新しい名前を設定できます。
  • シートコピー: シートオブジェクトのCopyメソッドで既存シートを複製できます。

ADVERTISEMENT

VBAによるシート操作の基本と自動化の利点

Excelでの繰り返し行うシート操作は、VBAを使用することで自動化できます。

VBAとは、Excelの機能を拡張し、定型作業を効率良く処理するためのプログラミング言語です。

手動では時間がかかる多数のシート管理も、VBAコードで高速に実行できます。

VBAを使うことの具体的なメリット

シート操作をVBAで行う最大のメリットは、作業の正確性と時間の短縮です。

手動入力によるヒューマンエラーを防ぎ、常に同じ処理を再現できます。

複数のシートに対して同じ操作を適用する場合、VBAは圧倒的な効率を提供します。

例えば、毎月のレポートで新しいシートを追加し、特定の名前を付けてデータをコピーする作業を自動化できます。

VBA実行のための前提条件

VBAコードを作成し実行するには、Excelの設定を一部変更する必要があります。

まず、Excelのリボンに「開発」タブを表示させます。

「ファイル」タブ > 「オプション」 > 「リボンのユーザー設定」に進みます。

右側の「メインタブ」リストで「開発」のチェックボックスをオンにして「OK」をクリックしてください。

また、作成したVBAコードを含むブックは、マクロ有効ブック(.xlsm)形式で保存する必要があります。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

VBAでシートを操作する具体的な手順

ここからは、VBAエディターを使ってシートを操作するコードの入力と実行手順を説明します。

以下の手順で各操作を試してみてください。

VBAエディターを開く手順

  1. 開発タブを表示する
    まだ開発タブを表示していない場合は、前述の「前提条件」を参照し設定してください。
  2. VBAエディターを起動する
    「開発」タブをクリックし、「コード」グループにある「Visual Basic」をクリックします。
    または、キーボードのAltキーを押しながらF11キーを押すことでも起動できます。

新規標準モジュールを挿入する手順

  1. プロジェクトエクスプローラーを開く
    VBAエディターの左側にある「プロジェクトエクスプローラー」ウィンドウを確認します。
    表示されていない場合は、「表示」メニューから「プロジェクトエクスプローラー」を選択してください。
  2. 標準モジュールを挿入する
    プロジェクトエクスプローラーで、対象のExcelブック(例: VBAProject(Book1))を右クリックします。
    メニューから「挿入」 > 「標準モジュール」を選択してください。
  3. コードウィンドウを確認する
    「Module1」という名前の新しいモジュールが作成され、右側にコードを記述するウィンドウが開きます。

新しいシートを追加するVBAコードの入力手順

  1. コードを入力する
    コードウィンドウに以下のVBAコードを入力してください。
    Sub AddNewSheet()
    Worksheets.Add After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "新データシート"
    End Sub
  2. コードの説明
    Worksheets.Addは新しいシートを追加する命令です。
    After:=Worksheets(Worksheets.Count)は、現在のブックの最後のシートの後に新しいシートを追加します。
    ActiveSheet.Name = "新データシート"は、追加されたシートの名前を「新データシート」に変更します。
    (Excel 2019/2021でも同様に動作します)

シートを削除するVBAコードの入力手順

  1. コードを入力する
    コードウィンドウに以下のVBAコードを入力してください。
    Sub DeleteSheet()
    Application.DisplayAlerts = False
    Sheets("削除対象シート").Delete
    Application.DisplayAlerts = True
    End Sub
  2. コードの説明
    Sheets("削除対象シート").Deleteは、指定した名前のシートを削除する命令です。
    Application.DisplayAlerts = Falseは、シート削除時に表示される確認メッセージを一時的に非表示にします。
    これにより、VBAが中断されずに処理を進められます。
    処理後はApplication.DisplayAlerts = Trueでメッセージ表示を元に戻すことが重要です。
    (Excel 2019/2021でも同様に動作します)

シートの名前を変更するVBAコードの入力手順

  1. コードを入力する
    コードウィンドウに以下のVBAコードを入力してください。
    Sub RenameSheet()
    Sheets("旧シート名").Name = "新しいシート名"
    End Sub
  2. コードの説明
    Sheets("旧シート名").Nameは、指定したシートの名前プロパティにアクセスします。
    そこに新しい文字列を代入することで、シート名を変更できます。
    (Excel 2019/2021でも同様に動作します)

シートをコピーするVBAコードの入力手順

  1. コードを入力する
    コードウィンドウに以下のVBAコードを入力してください。
    Sub CopySheet()
    Sheets("コピー元シート").Copy After:=Sheets(Worksheets.Count)
    End Sub
  2. コードの説明
    Sheets("コピー元シート").Copyは、指定したシートを複製する命令です。
    After:=Sheets(Worksheets.Count)は、コピー元シートを現在のブックの最後のシートの後に配置します。
    引数を指定しない場合は、新しいブックにシートがコピーされます。
    (Excel 2019/2021でも同様に動作します)

VBAマクロを実行する手順

  1. VBAエディターから実行する
    コードウィンドウで実行したいSubプロシージャ(例えばSub AddNewSheet())内にカーソルを置きます。
    ツールバーの「実行」ボタン(緑色の三角形)をクリックするか、F5キーを押してください。
  2. Excelから実行する
    VBAエディターを閉じ、Excelのシートに戻ります。
    「開発」タブの「コード」グループにある「マクロ」をクリックします。
    表示されたダイアログボックスから実行したいマクロ名を選択し、「実行」をクリックしてください。

VBAシート操作時の注意点とセキュリティ設定

VBAでシート操作を行う際には、いくつかの注意点があります。

また、マクロを含むブックのセキュリティ設定についても理解しておく必要があります。

シート名の重複と利用できない文字

シート名は、ブック内で一意である必要があります。

同じ名前のシートが存在する場合、VBAコードで名前を変更しようとすると実行時エラーが発生します。

また、シート名には特定の記号(例: \ / ? * [ ] :)を使用できません。

これらの記号を含む名前を設定しようとするとエラーになります。

対処法: シート名を変更する前に、その名前が既に存在しないか、無効な文字が含まれていないかを確認するコードを追加します。

  1. 既存シート名を確認する
    For Each ws In Worksheets: If ws.Name = "新しい名前" Then MsgBox "そのシート名は既に存在します": Exit Sub: End If: Next ws のようなコードでチェックできます。

シート削除時の警告メッセージと自動化

VBAでシートを削除する際、通常は「データが永久に削除されます」といった警告メッセージが表示されます。

このメッセージが表示されると、VBAの実行が一時停止し、手動での確認が必要になります。

対処法: コードの前後でApplication.DisplayAlertsプロパティを設定します。

  1. 警告を非表示にする
    シート削除処理の前にApplication.DisplayAlerts = Falseと記述します。
  2. 警告を再表示する
    シート削除処理の後にApplication.DisplayAlerts = Trueと記述し、必ず元に戻してください。
    これを忘れると、以降のExcel操作で警告メッセージが表示されなくなります。

マクロのセキュリティ警告の対処

VBAマクロを含むExcelブックを開くと、「セキュリティの警告 マクロが無効にされました」というメッセージが表示されることがあります。

これは、悪意のあるマクロからPCを保護するためのExcelのセキュリティ機能です。

対処法: マクロを有効にする方法はいくつかあります。

  1. コンテンツの有効化ボタンをクリックする
    セキュリティ警告バーに表示される「コンテンツの有効化」ボタンをクリックします。
    これは一時的な措置で、次回ブックを開くと再度警告が表示される場合があります。
  2. 信頼できる場所にブックを保存する
    「ファイル」タブ > 「オプション」 > 「トラストセンター」 > 「トラストセンターの設定」 > 「信頼できる場所」に進みます。
    マクロを含むブックを、信頼できる場所として登録されたフォルダに保存すると、警告なしでマクロが実行されます。
    ただし、信頼できないソースからのブックは絶対に信頼できる場所に置かないでください。
  3. マクロのセキュリティ設定を変更する
    「開発」タブ > 「コード」グループ > 「マクロのセキュリティ」をクリックします。
    「VBAマクロを有効にする」など、セキュリティレベルを下げる設定に変更できます。
    しかし、これはセキュリティリスクを高めるため、推奨されません。

マクロ有効ブック形式で保存する

VBAコードを記述したExcelブックは、必ず「Excelマクロ有効ブック(.xlsm)」形式で保存してください。

通常のExcelブック(.xlsx)形式で保存すると、記述したVBAコードは削除されてしまいます。

対処法: 「ファイル」タブ > 「名前を付けて保存」から、ファイルの種類で「Excelマクロ有効ブック (*.xlsm)」を選択して保存します。

ADVERTISEMENT

VBAと手動操作のシート管理比較

Excelのシート操作を手動で行う場合とVBAで自動化する場合の主な違いを比較します。

それぞれの状況に応じた使い分けの参考にしてください。

項目 VBAでのシート操作 手動でのシート操作
自動化 完全に自動化が可能 手作業で一つずつ操作が必要
エラー耐性 コードが正しければヒューマンエラーが発生しない 誤クリックや入力ミスによるエラーが発生する可能性がある
操作速度 大量のシートも瞬時に処理できる シート数が多いほど時間がかかる
複雑な処理 条件分岐やループ処理で複雑な自動化ができる 複雑な手順は覚えにくく、ミスしやすい
セキュリティ マクロ有効ブックのセキュリティ設定が必要 特別なセキュリティ設定は不要
学習コスト VBAの基本的な知識が必要 特別な学習は不要

VBAは初期の学習コストがかかりますが、一度コードを記述すれば繰り返し利用でき、長期的に見れば大幅な時間節約につながります。

この記事を通じて、VBAを使ったシートの追加・削除・名前変更・コピーの方法を習得できました。

これらのVBAコードは、日々のExcel業務におけるシート管理の自動化に直接役立ちます。

習得した知識を基に、複数のシートを一括で処理するマクロや、特定の条件に基づいてシートを操作するVBAに挑戦しましょう。

VBAによるシート操作をマスターし、Excel作業の効率を向上させてください。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】