VBA

VBA – フォルダを作成する

Excel VBAは、ビジネスやデータ処理の効率向上に欠かせないツールとして使われています。この記事では、VBAを使用してフォルダを作成する方法に焦点を当て、具体的なコードとともに詳細に解説します。特に、同名のファイルが存在する場合にエラーを発生させずにフォルダを作成する方法について取り上げます。

VBAでのフォルダ作成の必要性

データ処理やファイル管理を行う際、プログラムが自動的にフォルダを作成できると非常に便利です。例えば、毎回手動でフォルダを作成する手間を省くため、VBAでこの処理を自動化することができます。

実装

Sub CallSample()
    Dim Fld As String
    Fld = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\test"
    MakeFolder Fld
End Sub

Sub MakeFolder(ByVal Fld As String)
    Dim Res As VbFileAttribute
    On Error Resume Next
    ' 指定したパスがフォルダかどうかを確認
    Res = GetAttr(Fld) And vbDirectory
    On Error GoTo 0

    ' フォルダでない場合は作成
    If Res <> vbDirectory Then
        MkDir Fld
        If Err.Number <> 0 Then
            MsgBox "フォルダの作成に失敗しました。", vbExclamation
            Err.Clear
        Else
            MsgBox "フォルダを作成しました。", vbInformation
        End If
    Else
        MsgBox "既にフォルダが存在します。", vbExclamation
    End If
End Sub

解説

Sub CallSample()
    Dim Fld As String
    Fld = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\test"
    MakeFolder Fld
End Sub

このサブルーチンは、デスクトップに “test” という名前のフォルダを作成するために MakeFolder サブルーチンを呼び出します。フォルダのパスは CreateObject("WScript.Shell").SpecialFolders("Desktop") を使用して取得しています。

Sub MakeFolder(ByVal Fld As String)
    Dim Res As VbFileAttribute
    On Error Resume Next
    ' 指定したパスがフォルダかどうかを確認
    Res = GetAttr(Fld) And vbDirectory
    On Error GoTo 0

    ' フォルダでない場合は作成
    If Res <> vbDirectory Then
        MkDir Fld
        If Err.Number <> 0 Then
            MsgBox "フォルダの作成に失敗しました。", vbExclamation
            Err.Clear
        Else
            MsgBox "フォルダを作成しました。", vbInformation
        End If
    Else
        MsgBox "既にフォルダが存在します。", vbExclamation
    End If
End Sub

このサブルーチンでは、指定されたパスが既に存在するかどうかを確認し、存在しない場合は MkDir 関数を使用して新しいフォルダを作成します。フォルダが既に存在する場合は、エラーメッセージを表示せずに通知します。

まとめ

この記事では、Excel VBAを使用してフォルダを作成する手法について解説しました。このコードを使用することで、フォルダの作成という基本的な作業をプログラムで自動化することができます。手動での作業を効率化するだけでなく、同名のファイルが存在する場合にもエラーを発生させずにスムーズに処理できるようになります。