【VBA】新規にフォルダを作成する

Excel・VBA

VBAで新規にフォルダを作成する方法を紹介します。

フォルダを作成する方法

フォルダを新たに作成する方法は、MkDir ステートメントを利用します。

《MkDirステートメント書式》
 MkDir “パス

パスの指定は、絶対パスもしくは相対パスで指定をすることができます。

エラー原因

次の条件にあてはまるパスの指定をするとエラーとなります。

《エラーとなる場合》
1)すでに存在するディレクトリを指定した
2)存在しないディレクトリの下を指定した

1)のケースは、”C:\ABC”とCドライブ直下に”ABC”というフォルダが存在しているときに、パスを”C:\ABC”と指定した場合です。同じ場所に同じフォルダを作成できません。

フォルダの有無を確認する方法については、サンプルマクロで説明します。

2)のケースは、パスの指定を”C:\Sample\ABC”としたときに”Sample”というディレクトリ(フォルダ)が存在しない場合です。フォルダを作成できるのは、存在しているディレクトリに対してのみです。

フォルダを作成するマクロ

絶対パスで任意の場所にフォルダを作成する

まずは、Cドライブ直下に”ABC”というフォルダを作成するマクロです。Cドライブ直下に”ABC”というフォルダが存在しているかどうかを確認し、なければ作成します。

サンプルコード

Sub mkfolder()

 If Dir("C:\ABC", vbDirectory) = "" Then
  MkDir "C:\ABC"
 End If

End Sub

Dir関数は、ファイルやフォルダの有無を調べることができます。引数にフォルダの絶対パスを指定し、属性にフォルダ(vbDirectory)を指定したとき、戻り値が””(長さ0の文字列)であった場合は指定したパスにフォルダが存在しないことを示します。

Dir関数については、過去の記事もも参照してください。

次に、存在していないディレクトリに新しくフォルダを作成するマクロです。MkDir以外の方法では親ディレクトリごと作成する方法があるようですが、今回はMkDirを利用した方法で説明します。

”C:\Sample”ディレクトリに”ABC”というフォルダを新規に作成します。

サンプルコード

Sub mkfolder()

 If Dir("C:\Sample", vbDirectory) = "" Then
  MkDir "C:\Sample"
 End If
 If Dir("C: \Sample\ABC", vbDirectory) = "" Then
  MkDir "C: \Sample\ABC"
 End If

End Sub 

まずは親ディレクトリの有無を確認し、なければ作成。その後、目的のフォルダを作成します。階層が深くなった場合でも基本的には同様です。ただし親ディレクトリを新規に作成した場合は、その後のディレクトリは必ず新規に作成することになるため、Dir関数による確認が不要になります。

相対パスで現在のディレクトリを基準とした場所にフォルダを作成する

まずは、現在のディレクトリにフォルダを作成するマクロです。

サンプルコード

Sub mkfolder2()
 MkDir "ABC"
End Sub  

次に現在のディレクトリの一つ上のディレクトリにフォルダを作成する場合です。

Sub mkfolder2()
 MkDir "..\ABC"
End Sub   

一つ上の階層を指定する場合は、”..\”で指定することができます。二つ上の場合は、”..\..\”となります。

コメント

タイトルとURLをコピーしました