意外と記事にしているサイトが少ないので紹介。
他のサイトではmkdirを階層ごとに繰り返していく方法が多いですが、コードが長くなってあまりおすすめはしません。今回は複数の階層にまたがって一気にフォルダを作成したいとき、また、フォルダの存在確認が面倒なときにおすすめのコードを紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Option Explicit 'Windows API #If VBA7 And Win64 Then Public Declare PtrSafe Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" _ (ByVal hwnd As LongPtr, ByVal pszPath As String, ByVal psa As LongPtr) As Long #Else Public Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" _ (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Long) As Long #End If 'isMakeDirectory 戻り値:True 成功,False 失敗 Function isMakeDirectory(ByVal argFolderPath As String) As Boolean Dim lngResult As Long lngResult = SHCreateDirectoryEx(0&, argFolderPath, 0&) Select Case lngResult Case 0: MsgBox "成功": isMakeDirectory = True Case 183: MsgBox "既に存在" Case Else: MsgBox "その他エラー" End Select End Function |
複数の階層フォルダーを一気に作成する際には、Windows APIの「SHCreateDirectoryEx」を使用します。「SHCreateDirectoryEx」の戻り値は0が成功、183が既に存在するフォルダー、それ以外はエラーです。
---コメント---