Excel VBA シートを個別のブックとして保存するマクロ 個人用マクロブックに組み込めるよ

Excel マクロ、VBA

スポンサーリンク

はじめに

Excelで、たとえば「1日」~「31日」までの31個など、多数のシートが1つのブック内にあるとする。

それらはシート分けするのでなく「1日.xlsx」「2日.xlsx」・・・・・・「31日.xlsx」と、Excelブックに分ける形で保存したいということはないだろうか。

私なんかはそれが良くあるんだけどね。

「1日.xlsx」ファイルには「1日」シートだけ
「2日.xlsx」ファイルには「2日」シートだけ

という感じで、1つのブックには1つのシートだけがある状態で保存しておくわけね。

これは、シートが多くなると手作業ではやっていられないので、今回はそれを簡単に実行するマクロについて書いていく。
あちこちで類似のマクロは紹介されているはずだけどね。

そもそも、あんまり1つのExcelブックの中に、シートを増やしすぎるものではない。

シート数を増やしすぎるデメリット
  • ファイルサイズが重くなる。
  • 目的のシートを探すのが大変。シートを名前とかで検索するのは、通常機能ではできないし。
  • これ以上更新を加えたくない状態のシートについても、更新が加わったかどうか判別しにくくなる。

といったデメリットもあるしね。
シートを増やすのは主に、シート間に相互に計算式とかで繋がりがある場合にするべき。

考えなしにシートを増やしすぎるのでなく、Excelの個別ブックとして分けて保存することを、まず考えよう。

マクロの動作イメージ

それでは今回のマクロの動作イメージ。
Excelブックを開いた状態からマクロを起動すると、フォルダを選択するダイアログが出てくる。

Excelの各シートをブックとして分けて保存するわけだけど、その保存フォルダを指定する(初期表示としては、そのExcelブックの保存されているフォルダが表示される)。

するとそのフォルダに、現在時刻(秒単位)のフォルダが新規作成され、そこに各Excelブックが新規保存される。
マクロの実行が終わったら、そのフォルダが自動的に開かれ表示される。

マクロのソースコード

それでは今回のマクロのソースコード。

最後にある「appSet」「appReset」というのが、私のオリジナルのやつで、こちらを参照。

また、この「saveEachSheetsToBooks」マクロをExcelの個人用マクロブックに組み込んで使うと良いだろう。

個人用マクロブックとかについては、ここを展開。

オリジナルのマクロをリボンに追加する方法はこちら

個人用マクロブックについては、こちらこちらで述べています。

 

現在時刻のフォルダを新規作成して、それをエクスプローラで開く

Shell “C:\Windows\Explorer.exe ” & myPath, vbNormalFocus ‘保存したフォルダを開く

って記述があるけど、これについては前回の記事で取り上げている。

Excel VBA フォルダをエクスプローラで開くマクロ構文

MkDirってコマンドでフォルダの新規作成をしてるけど、それについてはこちらなんかでも扱っている。

Excel VBA フォルダを複数一括新規作成する手抜きマクロ 個人用マクロブックに組み込めるよ

スポンサーリンク