これは意外と奥が深い問題です。「C:\tmp\sub」というフォルダの存在を調べて、もし存在しなかったら作成したいわけですが「sub」ではなく「tmp」が存在しない可能性もあります。「C:\tmp」が存在しない場合は、FSO.CreateFolder "C:\tmp\sub" はエラーになります。そこで「対象フォルダの親フォルダが存在するかどうかを調べる」プロシージャを再帰的に呼び出して、存在するパスを見つけます。
なお、SHCreateDirectoryExというAPIを使うと、このように存在しない深いパスを一発で作成することができます。興味のある方は、下記のページをご覧ください。
Sub Sample10() Dim NewPath As String NewPath = InputBox("保存するフォルダのパスを入力してください" & vbCrLf & _ "例:C:\tmp\sub (必ずルートから)") ''[キャンセル]だったら終了 If NewPath = "" Then Exit Sub ''親フォルダまでが存在するかチェックする Call CheckparentFolder(NewPath) ''サンプルのファイルを保存する If Right(NewPath, 1) <> "\" Then NewPath = NewPath & "\" Open NewPath & "Sample.txt" For Output As #1 Print #1, Now() Close #1 End Sub Sub CheckparentFolder(TargetFolder) Dim ParentFolder As String, FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") ''調査対象フォルダの、親フォルダ名を取得する ParentFolder = FSO.GetParentFolderName(TargetFolder) If Not FSO.FolderExists(ParentFolder) Then ''親フォルダが存在しなかったら、 ''親フォルダを新しい対象フォルダとして ''自分自身(Sub CheckparentFolder)を呼び出す Call CheckparentFolder(ParentFolder) End If ''新しいフォルダを作る FSO.CreateFolder TargetFolder Set FSO = Nothing End Sub