Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » フォルダを作成するExcelマクロ-MkDir

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

対象:Excel2007, Excel2010, Excel2013

「vba excel2010 ディレクトリ作成 vbdirectory」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

フォルダ(ディレクトリ)を作成するExcelマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。

[スポンサードリンク]

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

検索キーワードに、定数・vbdirectoryを入れてらっしゃいますが、Excel VBAでフォルダを作成するときに、この定数を使う必要はありません。

Sub カレントフォルダに新しくフォルダを作成する()
 Const FOLD_NAME = "temp"
 Dim fold_path As String

 fold_path = CurDir & "\" & FOLD_NAME
 If Dir(fold_path, vbDirectory) <> "" Then
  MsgBox "同じ名前のフォルダが既に存在します。"
 Else
  MkDir fold_path
 End If
 
 Shell _
  PathName:="explorer" & Chr(32) & fold_path, _
  WindowStyle:=vbNormalFocus
End Sub

上記のマクロを実行すると、カレントフォルダに「temp」フォルダが作成され、そのフォルダがエクスプローラーで開かれます。

フォルダを作成しているのは
  MkDir fold_path
の部分です。

MkDirステートメントは、引数に指定されたフォルダを作成します。

サンプルマクロの解説

上記のマクロは、定数・FOLD_NAMEで、作成するフォルダの名前を指定するようにしてみました。
 Const FOLD_NAME = "temp"

CurDir関数で取得したカレントフォルダと、定数・FOLD_NAMEに格納された値から、作成するフォルダのフルパスを変数・fold_pathに格納します。
 fold_path = CurDir & "\" & FOLD_NAME

MkDirステートメントは、パスが指定されなかった場合はカレントフォルダに新しくフォルダを作成するので、単にMkDirするだけならCurDir関数でカレントフォルダを取得する必要はありませんが、上記のマクロではエラーチェックや、エクスプローラーで開く処理も含まれているため、カレントフォルダのフルパスと新規に作成するフォルダ名を格納しています。

既に同じ名前のフォルダが存在しているときにエラーにならないように、事前にDir関数でチェックを行い、存在していた場合は、メッセージを表示します。
 If Dir(fold_path, vbDirectory) <> "" Then
  MsgBox "同じ名前のフォルダが既に存在します。"

この記事の元になった
「vba excel2010 ディレクトリ作成 vbdirectory」
という検索をした方は、ここで使ったDir関数をご存じであったためvbdirectoryという語句を入れて検索されたのかな、と想像しています。

同名フォルダが存在していなかったときに、フォルダを作成します。
 Else
  MkDir fold_path

最後に、Shell関数を使って、作成したフォルダをエクスプローラーで開いています。
 Shell _
  PathName:="explorer" & Chr(32) & fold_path, _
  WindowStyle:=vbNormalFocus

既に同じフォルダが存在していた場合にも、上記のマクロでは新規に作成したときと同じくエクスプローラーでそのフォルダを開くようにしています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » フォルダを作成するExcelマクロ-MkDir

「VBA関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.