フォルダを作成する方法を考えていきましょう。
今までは、セルの文字色を変えたり、セルの値を別のセルにコピーしたりとかエクセル内の操作を取り扱ってきましたが、今回はフォルダ作成を行います。
意外と知らない人も多いかも知れませんが、エクセルVBAでフォルダを作成することもできます。
ただ、特段エクセルVBAでフォルダを作成するのみだとあまり意味がないかも知れませんが、
たとえば、出力先をフォルダを作成して、そこにエクセルファイルにある特定のシートや情報などのバックアップを取るようなマクロを作れば、簡単にバックアップすることができますよね。
ただし、今回は単純にフォルダー作成のみを行っていきます。
では、どのようなマクロにするかというと、
サンプル1~サンプル10という10個のフォルダをCドライブ直下に作成することとします。
■ポイント
フォルダ作成を行うために方法についてですが、以下になります。
Mkdir "パス"
です。
パスに新しいフォルダ名を含んだものにします。
例えば、Cドライブ配下にaaaという名前のフォルダを作成する場合は、
Mkdir "C:\aaa"
となります。
ただし、単純にMkdir "aaa"とすると、
カレントフォルダを作成することができます。
カレントディレクトリはCurDirプロパティに格納されていますので、
例えば、Msgbox CurDirとすることで表示することができます。
フォルダを作成する際の注意点ですが、すでに存在している場合は、
エラーとなりますので、事前に存在確認をするコードを記述しておくといいでしょう。
■回答
Sub Q11_Answer()
Dim ForderPath As String
Dim ForderName As String
Dim i As Integer
ForderPath = "C:\"
ForderName = ForderPath + "サンプル"
For i = 1 To 10
If Dir((ForderName & i), vbDirectory) = "" Then
MkDir (ForderName & i)
End If
Next i
Shell "explorer" & Chr(32) & ForderPath, vbNormalFocus
End Sub
■解説
Forループ内にフォルダを作成する処理を記述することによって、
サンプル1~サンプル10のフォルダを作成しております。
Forループ内にあるIf Dir((ForderName & i), vbDirectory) = "" Thenで、
フォルダを作成する前に、作成しようとするフォルダがすでに存在するか調べることができます。
もし、存在していた場合は、フォルダ名が取得されますので、条件に合致しない為、フォルダの作成は行われません。
最後にあるShell "explorer" & Chr(32) & ForderPath, vbNormalFocusは、
今回作成したフォルダがあるフォルダを開く為に記述しています。
こうすることで、いちいちエクスプローラから開く手間を省くことができます。
最後に実行結果はこちらです。ちゃんとフォルダが作成されていることが確認できます。