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