変換ファイル名のリストと同じサブフォルダを作成します。
矢印部分のファイルの場合、amp¥beginner と amp¥beginner¥image を作成します。
VBAでパスを分解しサブフォルダがなければ作成する
下のMyAmpSubFolderSearchプロシージャを追加しました。
・Split関数を使用し、¥で分解します。分解結果は配列arに入ります。
・For Nextで配列数-1回ループします。-1にしているのは、最後の配列はフォルダではなくファイル名だからです。
・LBoundで配列のインデックスの最小値を、UBoundで最大値を取得します。
・ExDirでフォルダの存在確認を行います。
・なければMkDirでフォルダを作成します。
・エラーが発生した場合はメッセージを表示し、Falseを返します。
Private Function MyAmpSubFolderSearch(fname As String)
Dim ar() As String
Dim i As Long
Dim s1 As String
ar = Split(fname, "\")
For i = LBound(ar) To UBound(ar) - 1
s1 = s1 & ar(i) & "\"
If ExDir(Range("G2") & "amp\" & s1, vbDirectory) = "" Then
On Error GoTo ErrExit
MkDir Range("G2") & "amp\" & s1
End If
Next
MyAmpSubFolderSearch = True
Exit Function
ErrExit:
MyAmpSubFolderSearch = False
MsgBox "エラー:" & Range("G2") & "amp\" & s1 & " フォルダを作成できませんでした。" & vbCrLf & _
"処理を中止します。" & vbCr & Err.Description
End Function
実行結果です。
2つのサブフォルダが作成され、AMP変換後のファイルが保存されています。