スポンサーリンク
このページではExcelでリストからシートを作成するVBAを使った方法をご紹介します。
Excelで複数シートを作成するとき、先にシートリストを作成することがあります。
先にリストを作成すると、どんなシートを作成するのか整理できるのでいいですね。
でも、たくさんのシートを追加していくのは時間もかかるし疲れます。
リストを元にサッと作れたら早く楽に作成できていいですよね?
VBAを使えば、簡単にサッと作れます。
このページの手順通りにやれば誰でもリストからシート作成可能です。
先にリストを作って、このページからコピー&ペーストして仕事をさっと終わらせましょう。
参考ファイルをダウンロードすることも出来ますのでご活用ください。
※シート名を取得する方法もご紹介していますので、併せてご覧ください。
Excelのシート名を取得する方法(参考VBA、ダウンロードファイルあり)
スポンサーリンク
1.普通にシートを作成するときは?
普通にシートを作成するときは、下にあるシートタブの脇にある+に○のマークをクリックします。
すると、シートが追加されます。
5シート以内であれば、手動で追加してもそれほど時間もかからずに出来ると思います。
ですが、10や20もシートを作成しなければならないとなると、かかる時間は大幅に増えます。
リストがあるのなら、そのリストの名称でサッと作成できれば間違いもなくて早いですよね?
ということで、リストから作成する方法を説明します。
2.リスト名のシートを作成したい!
リストからシートを連続作成する方法をご紹介します。
2-1.リストがあるExcelファイルを開く or 新規でExcelを開く
以下の画像は新規ファイルにリストを作成したものです。
2-2.『Alt』 + 『F11』 を押してVBAを起動する
2-3.『Alt』+『I(アイ)』を押して、『Alt』は離さずに『M』を押して標準モジュールを挿入する
まずは『Alt』+『I(アイ)』を押した後の画面です。
その後、『Alt』を離さずに『M』を押した後の画面です。
2-4.ウィンドウの白いところに下記のコードを貼り付けする
(以下、貼り付けするコード)
ーーーーーーーーーーーーーー
Sub リストを下に連続シート作成()
Dim i As Long
Dim Addc As Long
Dim Addr As Long
Dim n As Long
Dim MySheet As Worksheet
Addc = ActiveCell.Column
Addr = ActiveCell.Row
i = 0
Set MySheet = ActiveSheet
Do
n = Addr + i
If MySheet.Cells(n, Addc) <> “” Then
Sheets.Add after:=ActiveSheet
ActiveSheet.Name = MySheet.Cells(n, Addc).Value
Else: If MySheet.Cells(n, Addc) = “” Or i > 100 Then Exit Do
End If
i = i + 1
Loop
End Sub
ーーーーーーーーーーーーーー
貼り付け後は以下のようになります。
2-5.貼り付けしたらVBAのウィンドウを閉じる
2-6.リストの最上段のセルを選択する
2-7.『Alt』 + 『F8』 を押してマクロのウィンドウを表示する
2-8.そのまま『Enter』を押すと、シートが作成される
このマクロは、リストに文字が入力されていないところ(空白セル)まで入力されている名称でシートを連続作成します。
今回の場合はリストに A~E まで入力されており、その後空白セルがあります。
実行後は A~E までのシートを作成できました。
3.タテにもヨコにも対応したマクロ
2項では縦(上から下)にリストを読んでシートを連続作成しましたが、横(右)にリストを読んで作成したい場合もありますよね?
そんなときは、以下の手順でマクロを追加してください。
3-1.Excelファイルを開いて 『Alt』 + 『F11』 を押してVBAを起動する
先ほどのリストを全て数字で埋めたリストで実行してみたいと思います。
VBAを起動すると、先ほど貼り付けたコードが出てきます。
3-2.以下のコードを貼り付けする
(以下、貼り付けするコード)
ーーーーーーーーーーーーーー
Sub リストを右に連続シート作成()
Dim i As Long
Dim Addc As Long
Dim Addr As Long
Dim n As Long
Dim MySheet As Worksheet
Addc = ActiveCell.Column
Addr = ActiveCell.Row
i = 0
Set MySheet = ActiveSheet
Do
n = Addc + i
If MySheet.Cells(Addr, n) <> “” Then
Sheets.Add after:=ActiveSheet
ActiveSheet.Name = MySheet.Cells(Addr, n).Value
Else: If MySheet.Cells(Addr, n) = “” Or i > 100 Then Exit Do
End If
i = i + 1
Loop
End Sub
ーーーーーーーーーーーーーー
3-3.VBAのウィンドウを閉じる
3-4.作成したいリストの左端のセルを選択して 『Alt』 + 『F8』 を押す
まずは作成したいリストの左端のセルを選択します。
今回はセル”C7″を選択して 11~15 のシートを連続作成します。
そして 『Alt』 + 『F8』 を押すと以下のようにウィンドウが表示されます。
3-5.『リストを右に連続シート作成』を選択して『実行』をクリックする
実行すると以下の画像のように 11~15 のシートが作成されます。
拡大すると以下のようになっています。
こちらのマクロも右にリストを読んで空白があるまでシートを連続作成します。
これで、縦にも横にもリストを読み込んでシートが作成できるようになりました。
スポンサーリンク
4.ダウンロード
以下のパスワードを入力欄に貼り付けて、Downloadボタンをクリックしてファイルをダウンロードしてください。
PASS:sheet-create
5.さいごに
リストがあれば、簡単にシートを連続作成できます。
このページからコピペして使ってみてください。
VBAは使ったことがなくても、コードさえコピーすれば簡単です。
VBAを簡単に登録する方法は以下のページにまとめてあります。
今回のご紹介した新規シートを作成する方法とは別に、既存のフォーマットとなるシートを複製しながらリストの名称でシートを作成する方法もご紹介しています。
フォーマットシートをコピーしてリスト名称のシートを連続作成する方法ケースバイケースで新規シート作成と既存シートを複製する方法を使い分けると効果的です。
Excelの小技をいくつも組み合わせて時間短縮しましょう。