「vba excel2010 ディレクトリ作成 vbdirectory」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
フォルダ(ディレクトリ)を作成するExcelマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
フォルダを作成するサンプルマクロ
検索キーワードに、定数・vbdirectoryを入れてらっしゃいますが、Excel VBAでフォルダを作成するときに、この定数を使う必要はありません。
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
既に同じフォルダが存在していた場合にも、上記のマクロでは新規に作成したときと同じくエクスプローラーでそのフォルダを開くようにしています。
- Newer:独学の復習や再認識ができた
- Older:画像の枚数を調べるPowerPointマクロ
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » フォルダを作成するExcelマクロ-MkDir