スポンサーリンク
はじめに
ご存じない方も多いと思うが、Excelのマクロ・VBAでは、ファイルのコピー、フォルダの新規作成などといった、ファイルやフォルダの操作もできる。
今回はExcel VBAで、Excelの選択セル範囲からフォルダを複数新規作成できるマクロを紹介する。
普通こんな、複数フォルダを新規作成するなんて機能になると、専用のフリーソフト等をダウンロードして使ったり、Excel VBAを使うにせよそれ専用のExcelブックを作ったりするものだ。
しかし、いちいちそれらのフリーソフトやExcelブックを起動するのが面倒だ。
そこで今回は、同マクロを個人用マクロブックの中に組み込んで、日常使っているExcelの中から簡単に呼び出せるようにしてみた。
下記にソースコードを示すけど、どれだけ手を抜いて短いソースにできるかにチャレンジしてみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Sub makeNewFolders() '選択セル範囲の値よりフォルダ新規作成 Dim myFol As Variant Dim rng As Range With Application.FileDialog(msoFileDialogFolderPicker) .Title = "対象フォルダの選択" If Not .Show Then Exit Sub Call appSet myFol = .SelectedItems(1) & "\" 'サブフォルダを作成するフォルダ End With On Error Resume Next For Each rng In Selection MkDir myFol & rng.Value 'セルの値どおりのフォルダを新規作成 Next rng Call appReset End Sub Sub appSet() 'マクロ処理中に、描画など余計なものを省略して高速化 With Application .ScreenUpdating = False '描画を省略 .Calculation = xlCalculationManual '手動計算 .DisplayAlerts = False '警告を省略。 ' .EnableEvents = False 'DisplayAlertsよりこちらを設定した方が良いのかな? End With End Sub Sub appReset() '描画などの設定をリセット With Application .ScreenUpdating = True '描画する .Calculation = xlCalculationAutomatic '自動計算 .DisplayAlerts = True '警告を行う End With End Sub |
最後にある「appSet」「appReset」というのが、私のオリジナルのやつで、こちらを参照。
これを除いた「Sub makeNewFolders」が、今回の実質的なマクロだ。
マクロの使い方
このマクロの使い方は簡単。下図のようにExcelのセル範囲内に、新しく作成したいフォルダ名を列記し、選択しておく。
図の例ではC3セルが空白になっているけどこれはわざとで、こういったエラーに該当するセルがあっても、それはスルーするようにしている。
ソースコード中の「On Error Resume Next」の部分ね。
そして、このセル範囲を選択してからマクロを起動すれば、フォルダを選択するダイアログが出てくる。
サブフォルダを新規作成したいフォルダを、このダイアログから選んで「OK」を押せば、そのフォルダ内に先程セル範囲で指定した複数のフォルダが新規作成される。
ソースコードの解説
今回のソースコードで
Application.FileDialog(msoFileDialogFolderPicker)
というやつが、フォルダを選ぶダイアログを呼び出すもの。
このApplication.FileDialog というやつには、全部で下記4つの類型がある。
名称 | 機能 |
---|---|
msoFileDialogFolderPicker | フォルダを選択する |
msoFileDialogFilePicker | ファイルを選択する →「開く」のではなく「選択する」だけ |
msoFileDialogOpen | ファイルを開く →Excelで「開く」わけなので、「Excelで開く」ことができないならエラーになる。 「選択」するというmsoFileDialogFilePickerとの、微妙な違い。 |
msoFileDialogSaveAs | ファイルを保存する |
そしてこれらダイアログについては、何も選択せず「キャンセル」ボタンを押されたときの処理を必ず書いておかなければならない。
そのためには、ダイアログの「.Show」がFalseになるということを記述するわけだが、そのために「=False」なんて面倒な書き方はしない。
「If Not .Show Then」というように、「Not」を使って簡潔に書く。
こういう手短な書き方については別記事でも触れている。
そして、フォルダを新規作成するコマンドが「MkDir」だ。
Dirというのがファイルに関して幅広く取り扱うコマンドで、MkというのはMakeの略だから、フォルダを新規作成するということね。
スポンサーリンク