【VBA言語】フォルダ作成・削除【初心者向け徹底解説】
フォルダの作成方法
VBAでフォルダを作成するには、主に「MkDir」というコマンドを使用します。MkDirは指定した場所に新しいフォルダを作成するための命令です。
以下に基本的な構文を示します。
MkDir "C:\Users\username\Documents\NewFolder"
このコードは、指定したパスに「NewFolder」という名前のフォルダを作成します。もし指定したパスが存在しない場合は、VBAが自動的にそのパスを作成してくれます。
フォルダの作成例
例えば、デスクトップに「TestFolder」という名前のフォルダを作成したい場合、以下のようにコードを書くことができます。
Sub CreateFolder()
MkDir "C:\Users\username\Desktop\TestFolder"
End Sub
上記のコードを実行すると、デスクトップに「TestFolder」というフォルダが作成されます。ここで、usernameはあなたのPCに設定されたユーザー名です。
エラーチェックを追加する方法
既に同じ名前のフォルダが存在すると、エラーが発生します。そのため、フォルダが存在するかどうかを確認してから作成することが一般的です。以下はその方法です。
Sub CreateFolderWithCheck()
On Error Resume Next 'エラーを無視
If Dir("C:\Users\username\Desktop\TestFolder", vbDirectory) = "" Then
MkDir "C:\Users\username\Desktop\TestFolder"
End If
On Error GoTo 0 'エラー処理を戻す
End Sub
このコードでは、まずDir関数を使ってフォルダの存在を確認し、存在しない場合にのみフォルダを作成します。
フォルダの削除方法
フォルダを削除するには、Rmdir(Remove Directoryの略)を使用します。この命令は、指定されたフォルダを削除します。
以下に基本的な構文を示します。
Rmdir "C:\Users\username\Documents\OldFolder"
上記のコードは、指定された場所にある「OldFolder」という名前のフォルダを削除します。ただし、削除する前に、そのフォルダ内にファイルやサブフォルダが含まれていないことを確認する必要があります。もしフォルダ内にファイルがある場合、Rmdirでは削除できません。
フォルダ削除の例
例えば、デスクトップにある「TestFolder」というフォルダを削除したい場合、以下のようにコードを書くことができます。
Sub DeleteFolder()
Rmdir "C:\Users\username\Desktop\TestFolder"
End Sub
このコードを実行すると、デスクトップ上の「TestFolder」というフォルダが削除されます。
フォルダ内にファイルがある場合の削除
もし削除したいフォルダ内にファイルやサブフォルダがある場合、Rmdirを直接使うことはできません。その場合、まずフォルダ内のファイルを削除したり、サブフォルダを削除したりする必要があります。
以下のコードは、フォルダ内のすべてのファイルを削除し、その後でフォルダ自体を削除する方法を示しています。
Sub DeleteFolderWithContents()
Dim file As String
Dim folderPath As String
folderPath = "C:\Users\username\Desktop\TestFolder\"
' フォルダ内のファイルを削除
file = Dir(folderPath & "*.*")
Do While file <> ""
Kill folderPath & file
file = Dir
Loop
' フォルダを削除
Rmdir folderPath
End Sub
このコードでは、Dir関数を使ってフォルダ内のすべてのファイルをリストアップし、Kill命令でそれらを削除します。その後、Rmdirで空になったフォルダを削除します。
エラーハンドリングを追加する方法
フォルダを削除する際にエラーが発生することがあります。例えば、フォルダが存在しない場合や、ファイルがまだ開かれている場合などです。エラーハンドリングを追加することで、これらのエラーを適切に処理できます。
Sub SafeDeleteFolder()
On Error Resume Next 'エラーを無視
Rmdir "C:\Users\username\Desktop\TestFolder"
If Err.Number <> 0 Then
MsgBox "フォルダの削除に失敗しました: " & Err.Description
Else
MsgBox "フォルダが正常に削除されました。"
End If
On Error GoTo 0 'エラー処理を戻す
End Sub
このコードでは、エラーが発生した場合にエラーメッセージを表示します。