フォルダを作成する方法はたくさんありますが、深い階層のフォルダを作成するとき、パスの中に存在しないフォルダがある場合は、そこから作成しなければなりません。たとえば「C:\Work\Sample\Test」というフォルダを作りたいとき、もし「C:\Work\Sample」フォルダが存在しない場合は、まず「C:\Work\Sample」フォルダを作り、次に「C:\Work\Sample\Test」フォルダを作らなければなりません。FileSystemObjectでこれをやるには、どこから存在するかを再帰的にチェックするなどの方法があります。その方法は「保存先のフォルダがなかったら作る」をご覧ください。
まぁ、これはこれで技術としてはおもしろいので何かに役立つでしょうけど、実はSHCreateDirectoryExというAPIを使うと、こうした存在しないパスのフォルダを一発で作成することができます。次のコードは、InputBoxで入力されたフォルダを作成します。
Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" ( _ ByVal hwnd As Long, _ ByVal pszPath As String, _ ByVal psa As Long) As Long Sub Sample() Dim rc As Long, Target As String Target = InputBox("作成するフォルダのフルパスを入力してください") If Target = "" Then Exit Sub rc = SHCreateDirectoryEx(0&, Target, 0&) If rc = 0 Then MsgBox Target & "を作成しました" ElseIf rc = 183 Then MsgBox Target & "は存在しています" Else MsgBox Target & "を作成できませんでした" End If End Sub
指定したフォルダの作成に成功すると 0 が返ります。作成しようとしたフォルダがすでに存在すると 183 が返るらしいです。すいません、このへんはよくわかりません。80 が返ると書かれたページもありました。正確なところはMicrosoftの技術情報などをご確認ください。