Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excel VBA スキルアップコレクション Topics  >     (11) フォルダを作成する

 
(11) フォルダを作成する

 VBAからフォルダを作成する方法を紹介します。

 下記サンプルコードは、フォルダ「C:\Sample」配下にフォルダ「value」を作成する処理です。

 1行目:  Public Sub make_folder_01()
 2行目:  
 3行目:      ' フォルダを作成する。
 4行目:      MkDir "C:\Sample\value"
 5行目:  
 6行目:  End Sub
既に存在しているフォルダを作成しようとすれば、エラーが発生します。フォルダ作成前に、フォルダの存在を確認する判定処理を追加すれば良いでしょう。
存在しないパスにフォルダを作成しようとしてもエラーが発生します。
 また、MkDir以外にも、FileSystemObjectを用いてフォルダを作成することができます。プログラムコードが少ない分、MkDirの方が使い勝手が良いでしょう。

 1行目:  Public Sub make_folder_02()
 2行目:     
 3行目:      Dim FSO As Object
 4行目:
 5行目:      Set FSO = CreateObject("Scripting.FileSystemObject")
 6行目:     
 7行目:      ' フォルダを作成する。
 8行目:      Call FSO.CreateFolder("C:\Sample\value")
 9行目:     
10行目:      Set FSO = Nothing
11行目:     
12行目:  End Sub



 フォルダ階層作成
 「C:\Sample」と言うフォルダが存在しない状態で、「C:\Sample\value\fruit\2008」というフォルダを作成しようとすると、実行エラーが発生します。そこで、親フォルダが存在しなければ、親フォルダを作成してから目的のフォルダを作成するプロシジャを用意すれば便利でしょう。以下は、そのサンプルです。

 1行目:  Sub test()
 2行目:      Call make_DeepFolder("C:\Sample\value\fruit\2008")
 3行目:  End Sub
 4行目:  
 5行目:  Public Sub make_DeepFolder( _
 6行目:        path As String _
 7行目:  )
 8行目:  
 9行目:      ' FileSystemObjectを作成する。
10行目:      Dim Obj As Object
11行目:      Set Obj = CreateObject("Scripting.FileSystemObject")
12行目:      
13行目:      ' 親フォルダを調べる。
14行目:      Dim parentfolder As String
15行目:      parentfolder = Obj.GetParentFolderName(path)
16行目:      
17行目:      ' 親フォルダの存在を確認する。
18行目:      If Obj.FolderExists(parentfolder) = False Then
19行目:          ' 再起的にmake_DeepFolder()プロシジャを呼び出す
20行目:          Call make_DeepFolder(parentfolder)
21行目:      End If
22行目:      
23行目:      ' フォルダを作成する。
24行目:      If Obj.FolderExists(path) = False Then
25行目:          MkDir path
26行目:      End If
27行目:  
28行目:      ' オブジェクトを破棄する。
29行目:      Set Obj = Nothing
30行目:  
31行目:  End Sub

 make_DeepFolder()プロシジャの中で、make_DeepFolder()プロシジャ自身が呼び出されています。このようなプログラムを再帰プログラムと呼びます。
ページの先頭へ