VB6フォルダを作成する

スポンサーリンク

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")

関連するリファレンス

準備中です。

スポンサーリンク