人事業務効率化お役立ちツール:Excelシート別に個別ブック作成

仕事効率化

こんにちは、管理人のtsenです。

私は10年以上人事業務を担当しています。

人事業務では単純な繰り返し作業が多く、

業務効率化のために、自分が開発したExcelマクロ(VBA)を公開したところ

「うちの部署の業務でも使いたい!」
「是非Excelマクロを教えてほしい!」

と、多くの需要があることを知り、

より多くの人の役に立てるのではないかとこのサイトを立ち上げました。

現在では、社内で様々な業務効率化ツールの開発を手掛けています。

今回は、その中から

Excelのシート別に個別Excelブック作成する方法について

まとめていきます。

スポンサーリンク

人事業務の「シート分割作業」を効率化しよう

人事業務の中でよくある作業の中に

「一覧データを職場別に分割してメール送信、棚卸作業をしてもらう」

ような作業があると思います。

この場合、すべてのデータを見せるわけにはいかないので

個別ブックに保存しなおさなければならないという事があります。

作業イメージとしては以下のようなものです。

イメージ図
イメージ図

1つのエクセルブックに複数のシートがある状態から

個別のエクセルブックに分割できます。

その時、保存するブックの名称はシート名称にします。

人事業務を効率化するための事前準備

初めてマクロを立ち上げる方はまず、開発タブを表示させる必要があります。

ファイル>オプション>リボンユーザーの設定>開発にチェック

これで、開発タブが表示されます。

開発タブが開いたら

開発タブ>Visual Basic>挿入>標準モジュールで表示します。

標準モジュールに以下のコードを入れてください。

Sub シート分割()
Dim i As Integer
Dim N As Integer 'ファイル作成数
Dim Filename As String '保存するファイル名

Application.ScreenUpdating = False '画面更新を停止

i = 1
Do While i <= Worksheets.Count
Filename = Worksheets(i).Name
Worksheets(i).Copy
With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "\" & Filename & ".xlsx" '元ファイルと同フォルダに保存する
.Close
N = N + 1
End With
i = i + 1
Loop

Application.ScreenUpdating = True '画面更新を再開
MsgBox N & " 個のブックを作成しました。"
End Sub


ここが難しい方は、超初心者向け「初めてのマクロ」を参考にしてください。

Excelシート分割マクロコードの解説~人事業務効率化~

では、コード解説をしていきます。

tSen
tSen

コードの意味を理解しないと「こういう場合はどうすればいいの?」等、応用が出来ません。
細かい部分は分からなくても概要は理解しておくことが重要です!

Excelマクロ:第1ブロック解説

Sub シート分割()
Dim i As Integer
Dim N As Integer 'ファイル作成数
Dim Filename As String '保存するファイル名

Application.ScreenUpdating = False '画面更新を停止

まず、この部分を解説していきます。

Sub シート分割() は単純に マクロのタイトル(名称)
です。

Dim i As Integerとは、いったい何を意味しているんでしょうか?

マクロというものは最初に
「この文字は”こういう意味だよ”」と定義を宣言をする必要があります。

Dim i As Integer = 「これから出てくるiっていうのはInteger(数字)だよ」

とコンピュータに教えてあげているんです。

この宣言をしないで

いきなりコンピュータに「 i 」の数だけ処理をしてね!と話しかけても

「i」って何のことですか?愛?アイ?

と困ってしまうからです。

なので、最初に

これから、「 i 」って出てくるから、それは数字のことだと思ってね!

と教えてあげているんです。

同様に、

Dim N As Integer =「N」は数字(Integer)のことだよ
Dim Filename As String =「Filename」は文字列(String)のことだよ

と、最初に教えてあげているんですね。

Application.ScreenUpdating = False

画面更新の停止とメモが入っていますね。


エクセルって、内容を編集して保存しようとするときに

こんなポップアップ画面が出てきます。

ポップアップ画面
ポップアップ画面

ブックを保存するたびに、「保存しますか?」といちいち聞いてくるのがうっとうしいので

Application.ScreenUpdating = False で このポップアップを出さない

と指示しています。

tSen
tSen

ちなみに、
「この場所に、○という名前のファイルが存在しますが置き換えますか?」
というポップアップはちゃんと出てくれますので
誤ってファイルを上書きしてしまうという心配はありません。

Excelマクロ:第2ブロック解説

i = 1
Do While i <= Worksheets.Count
Filename = Worksheets(i).Name
Worksheets(i).Copy
With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "\" & Filename & ".xlsx" '元ファイルと同フォルダに保存する
.Close
N = N + 1
End With
i = i + 1
Loop

さて、この部分がこのマクロの肝の部分です。

まず、

i = 1 ですが「 i 」は1を入れてくださいという意味。

中学校の数学なんかの、方程式の問題で
x=1 , y=2 を代入する
みたいな問題ありましたよね?

それと同じで
i = 1 を代入しますという意味です。

このような「i」のことを変数と言います。

続いて、

Do While i <= Worksheets.Count です。

ひとまず、
「 i 」の部分に「 1 」を代入してみましょう。

Do While 1<= Worksheets.Count となりますね。

Worksheets.Countは読んで字のごとく、
ワークシートの数なので、今回の例では「3」ですね。(A社、B社、C社)
これも代入してみましょう。

Do While 1<= 3 となりますね。

ここで、二つ目の重要ポイントです!

Do While(条件式)
~~処理内容~~
Loop
⇒条件式に当てはまる場合に、処理内容を繰り返し行う。

1<= 3ってどんな条件を意味しているかというと

1≦3 は正しい数式なので、処理を実行します。
2≦3 も正しい数式なので、処理を実行します。
3≦3 も正しい数式なので、処理を実行します。
4≦3 は間違った数式なので、処理をしません。

という条件式を書くことにより、3回処理するという事をしています。

<br>tsen

tsen

この繰り返しの処理は、マクロではよく出てきます。
覚えておきましょう!

Filename = Worksheets(1).Name は Filenameはワークシートの1シート目の名称
なので、Filenameは「A社」ですね。

Worksheets(1).Copy は ワークシートの1シート目をコピー

With ActiveWorkbook
.SaveAs ThisWorkbook.Path & “\” & Filename & “.xlsx”
.Close

は 
元ファイルと同フォルダ.(PathにFilename(A社)の名称で
保存(Save)して閉じる(Close)

これで、まず、A社.xlsxというファイルが保存されました。

N = N + 1 End With は後々使用する数をカウントしているだけなので
あまり考えなくてOKです。

i = i + 1

ここも重要なポイントです。

i は 1のことでしたよね?そのまま入れると

1 = 1 + 1 ??
と、おかしな式になってしまいます。

正解は i = 1 + 1 と読みます。

次の変数「i」は1+1=2を入れますよ!という意味です。

Aさん
Aさん

なるほど!
次は2シート目のB社を処理していくのだから、
変数の「i」を2にして、また同じ処理をするんだね!

tsen
tsen

その通りです!2シート目、3シート目をコピーして
元ファイルと同フォルダ.にFilenameの名称で
保存して閉じる処理をします。

スポンサーリンク
ads01

Excelマクロ:第3ブロック解説

Application.ScreenUpdating = True '画面更新を再開
MsgBox N & " 個のブックを作成しました。"
メッセージ画面

このようなメッセージボックスを出しています。

人事業務効率化のお役立ちツールを無料公開中

今回は、

Excelマクロでシートを個別のエクセルに分割して保存する方法

について解説してきました。

今回の内容と、こちらの記事の内容を組み合わせて使うとより業務効率化が出来ると思いますよ。

このサイトでは、人事業務の効率化に役立つツールをたくさん紹介しています。

主にExcelマクロを使った無料で導入できるツールになりますので是非取り入れてみてください。

tsen
tsen

ここまで読んでいただきありがとうございました。

タイトルとURLをコピーしました