Step26:パスをSplit関数で分解しサブフォルダがなければ作成する|Excel VBA

変換後のAMPファイルを保存するのに、変換元ファイルと同じサブフォルダを作成します。パスの分解はSplit関数で行います。

Split関数の構文

Split(文字列, 区切り文字)

返り値は分解された文字列の配列になります。

AMP変換ソフト作成 メニューへ

スポンサーリンク





変換ファイル名のリストと同じサブフォルダを作成します。
矢印部分のファイルの場合、amp¥beginner と amp¥beginner¥image を作成します。
変換ファイル名のリストと同じサブフォルダを作成する

VBAでパスを分解しサブフォルダがなければ作成する

下のMyAmpSubFolderSearchプロシージャを追加しました。
VBAでパスを分解しサブフォルダがなければ作成する

・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変換後のファイルが保存されています。
2つのサブフォルダが作成され、AMP変換後のファイルが保存されている

スポンサーリンク






AMP変換ソフト作成 メニューへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved