フォルダを作成する
VBAではMkDirステートメントを使用してフォルダを作成できます。

Cドライブの直下に「テストフォルダ」を作成したいときは以下のように入力します。
1 |
MkDir "C:\テストフォルダ" |
MkDirを使用する上で注意する点が2個あります。
・MkDirで指定したパスにフォルダが存在するときは「実行時エラー75:パス名が無効です。」と表示されます。MkDir実行前にフォルダが存在するか確認する必要があります。
・再帰的にフォルダを作成してくれません
たとえば「C:\テストフォルダ」がない状態で「C:\テストフォルダ\テストフォルダ1」を作成しようとすると
「実行時エラー76:パスが見つかりません。」と表示されます。
1 |
MkDir "C:\テストフォルダ\テストフォルダ1" |
テストフォルダをCドライブの直下に作成した上で、その中にテストフォルダ1を作成する必要があります。
1 2 |
MkDir "C:\テストフォルダ" MkDir "C:\テストフォルダ\テストフォルダ1" |
フォルダが存在するか確認する
VBAを使用して、指定したパスのフォルダの存在を確認してみます。
テストのため、C:\hasFolderに「folder1」という名前のフォルダを置きました。
Dir関数を使用する方法
VBAのDir関数は特定のパスにあるファイルやフォルダを検索するために使用します。
指定された特定のパスにファイルやフォルダが存在する場合、Dir関数はその名前を返します。
それ以外の場合は空の文字列を返します。
Dir関数を使用してフォルダの存在を確認するコードは以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Option Explicit Function HasFolder(folder_path As String) As Boolean '################################################################################### '指定したパスにフォルダが存在するか確認する '----------------------------------------------------------------------------------- '引数 :folder_path 存在を確認したいフォルダの絶対パス '戻り値:folder_pathが存在する場合True,存在しない場合False '################################################################################### If Dir(folder_path, vbDirectory) = "" Then HasFolder = False Else HasFolder = True End If End Function |
HasFolderを呼び出して、C:\hasFolder内の「folder1」フォルダと「folder2」フォルダが
それぞれ存在するか動作を確認してみます。
1 2 3 4 5 6 7 |
Option Explicit Sub TestHasFolder() MsgBox HasFolder("C:\hasFolder\folder1") MsgBox HasFolder("C:\hasFolder\folder2") End Sub |
TestHasFolderを実行してみるとfolder1は存在するので、Trueと表示されます。
folder2は存在しないのでFalseと表示されます。
FileSystemObjectのFolderExists関数を使用する方法
FileSystemObjectのFolderExists関数を使用すると指定したパスにフォルダが存在するかどうかを
判定することができます。
FileSystemObjectのFolderExists関数を使用してフォルダの存在を確認するコードは以下になります。
使用するには参照設定でMicrosoft Scripting Runtimeを選択しておく必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Function HasFolder2(folder_path) As Boolean '################################################################################### '指定したパスにフォルダが存在するか確認する '参照設定でMicrosoft Scripting Runtimeを事前に選択してください '----------------------------------------------------------------------------------- '引数 :folder_path 存在を確認したいフォルダの絶対パス[String] '戻り値:folder_pathが存在する場合True,存在しない場合False '################################################################################### Dim fso As FileSystemObject Set fso = New FileSystemObject If fso.FolderExists(folder_path) Then HasFolder2 = True GoTo Finally End If Finally: Set fso = Nothing End Function |
HasFolder2を呼び出して、C:\hasFolder内の「folder1」と「folder2」がそれぞれ存在するか確認してみると
Dir関数と同じ結果になります。
1 2 3 4 5 6 |
Sub TestHasFolder2() MsgBox HasFolder2("C:\hasFolder\folder1") MsgBox HasFolder2("C:\hasFolder\folder2") End Sub |
フォルダパスを取得する

フォルダをエクスプローラーで開く

コメント