フォルダを作成する
スポンサーリンク
VB6 では、MkDir 関数を使用するか、FileSystemObject (FSO) の CreateFolder メソッドを使用します。なるべく、FileSystemObject の CreateFolder メソッドを使用するようにしてください。
どちらの関数を使うにしても、.NET Framework の CreateDirectory メソッドと違い、最下層のディレクトリまでのサブ ディレクトリが存在しない場合はエラーとなります。同じ動きをさせるには、サブ ディレクトリの存在を確認しつつ、随時作成するようなメソッドを自作することになります。(後述で紹介します)
FileSystemObject を使用する場合は、[プロジェクト] メニューの [参照設定] を選択して「Microsoft Scripting Runtime」にチェックを付けてください。
サンプルコード
以下にサンプルコードを示します。
VB6.0 以前
' FileSystemObject (FSO) の新しいインスタンスを生成する Dim cFso As FileSystemObject Set cFso = New FileSystemObject ' フォルダ (ディレクトリ) を作成する Call cFso.CreateFolder("C:\Hoge\Foo\") ' 作成先の Folder オブジェクトを取得することも可能 Dim cFolder As Folder Set cFolder = cFso.CreateFolder("C:\Hoge\Bar\") ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす) Set cFso = Nothing Set cFolder = Nothing
以下は、MkDir 関数を使用した例です。(お勧めしません)
VB6.0 以前
' フォルダ (ディレクトリ) を作成する Call MkDir("C:\Hoge\Foo\")
最下層まで必要なディレクトリを随時作成するメソッドです。
VB6.0 以前
' ------------------------------------------------------------------------------- ' 指定したすべてのディレクトリとサブディレクトリを作成します。 ' ' @Param stDirPath 作成するディレクリまでのパス。 ' ------------------------------------------------------------------------------- Private Sub CreateDirectory(ByVal stDirPath As String) If Right$(stDirPath, 1) <> "\" Then stDirPath = stDirPath & "\" End If Dim lStart As Long lStart = 1 Dim cFso As FileSystemObject Set cFso = New FileSystemObject If Left$(stDirPath, 2) = "\\" Then Do While (True) If Mid$(stDirPath, 3, 1) <> "\" Then Exit Do End If stDirPath = Left$(stDirPath, 2) & Mid$(stDirPath, 4) Loop lStart = InStr(3, stDirPath, "\") lStart = InStr(lStart + 1, stDirPath, "\") If lStart <= 0 Then Exit Sub End If If cFso.FolderExists(Left$(stDirPath, lStart)) = False Then Exit Sub End If End If Do While (True) Dim lLength As Long lLength = InStr(lStart, stDirPath, "\") If lLength <= 0 Then Exit Do End If Dim stTargetDir As String stTargetDir = Mid$(stDirPath, 1, lLength) If cFso.FolderExists(stTargetDir) = False Then Call cFso.CreateFolder(stTargetDir) End If lStart = lLength + 1 Loop End Sub
使用例は以下のようになります。
VB6.0 以前
' フォルダ (ディレクトリ) を作成する Call CreateDirectory("C:\Hoge\Foo\Bar")
関連するリファレンス
準備中です。