コピペで使えるVBAのコード置き場

階層のあるフォルダを一括作成

筆箱にVBAのカンニングペーパーを入れる係のみすくです。こんにちは。

こんな技があるとは知らなかった!
Windows APIを使用して、サブディレクトリも一括でディレクトリを作成します。

Option Explicit

Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" ( _
                                ByVal hwnd As Long, _
                                ByVal pszPath As String, _
                                ByVal psa As Long) As Long

'---------------------------------------------------------------------------------------------------
'【処 理 名】ディレクトリ作成
'【処理概要】ディレクトリを作成する
'【引    数】[I]ByVal path As String ディレクトリパス
'【返 却 値】 SHCreateDirectoryEx()返却値。0 = ディレクトリ作成成功
'---------------------------------------------------------------------------------------------------
Function makeDirectory(ByVal path As String) As Long
    'ツール > 参照設定 > Microsoft Scripting Runtime
    Dim oFSO As New FileSystemObject
    
    If oFSO.FolderExists(path) <> True Then
        makeDirectory = SHCreateDirectoryEx(0&, path, 0&)
    End If
    Set oFSO = Nothing
End Function

参考:moug様 「保存先フォルダを作成してブックを保存する(複数階層のフォルダ)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です