適材適所

PowerShellやVBAなどのプログラミングに関すること、キャリア、子育ての3本で書いていきます

Excel VBAでフォルダを作成する

年度の始めに、月数分のフォルダを作成したり、

日報用のフォルダを作成したり、

手作業でやるの面倒じゃないですか?

そんな仕事あるある、VBAに任せましょう。

今回はフォルダを一括で新規に作成するコードを紹介します。

フォルダを作成するという苦行

2021年02月01日 2021年02月02日 2021年03月03日 ・ ・ ・

会社の共有フォルダにはこんなフォルダが溢れています。

溢れています。

溢れていませんか?

・・・溢れていませんか。

とにかくWindowsを使っていると、普通エクスプローラーを使ってGUIでフォルダを作りますが、

それがとっても面倒。

しかもそれが、連番や連続する日付なんかが入っているときは、

「あああああーーーもーーー!!」

となるわけです。

「こう、Excelみたいに連続データ作成できないの!!?」

と思うわけです。

そう思ったあなたはExcelとVBAを使って作りましょう。

Excel VBAを使ってフォルダを作成する

事前準備

Sheet1に作成したいフォルダ名をあらかじめ書いておきます。

f:id:shinmai_papa:20210213132039p:plain

フォルダ名はフルパスで指定します。

コード

Sheet1のA列に書かれた文字列からフォルダを作成するコードです。

Sub sample()
    'Sheet1の1列目に作成したいフォルダをあらかじめ書いておきます。
    '書かれたフォルダ名の形式チェックしていません。
    
    Dim maxRow As Long: maxRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    Dim i As Long
    Dim tmpPath As String
    
    For i = 1 To maxRow
        tmpPath = Sheet1.Cells(i, 1).Value
        '空白の場合無視する
        If tmpPath = "" Then
            GoTo CONTINUE
        End If
        'すでにフォルダが存在する場合無視する
        If Dir(tmpPath, vbDirectory) = "" Then
            GoTo CONTINUE
        End If
        'フォルダを作成する
        MkDir Sheet1.Cells(i, 1).Value
CONTINUE:
    Next i
    
End Sub

作成できないフォルダ名が書かれていた場合、

例えば、存在しないパスを含んだフォルダ名は無視されます。

また、既にフォルダが存在する場合も同様に無視します。

これで、Excelを使って連番を持ったフォルダ名を書いておけば、

簡単にフォルダを作成することができます。

このコードではどのフォルダが作成できて、どれが無視されたかは特に表示していませんが、

そこは用途に合わせてカスタマイズしてもらえればいいかと思います。

本当に地味なコードですが、これを活用すればちょっとだけ、世界が幸せになるかも・・・!!

終わりに

年度初めや月初めに地味に降りかかってくる苦行。

これで少しでも苦行から開放される方が増えたらいいのですが・・・。

しかしフォルダを作成するのってなんであんなに面倒なんでしょうね。

でもちゃんとした名前を付けないと、後で苦労するのは自分ですし。

パソコンがよしなにフォルダ名を設定してくれるような未来が来るといいですね!

そんなどうでもいい技術はない?

そうですよね。

やっぱり自分でコードを書くしかないですよね。

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