はじめに
今回は、フォルダを新規作成する方法について解説します。
汎用性の高いサンプルコード、「当日の日付フォルダを作成」「フォルダを一括で作成」などを掲載しています。
この記事を読むメリット
- フォルダを新規作成する方法が分かります。
- 基本的な構文、引数の意味から丁寧に解説します。
- フォルダ作成時のエラー出力条件、エラーの回避方法についても解説します。
- コピペで使える実践的なコードを掲載しています。
前提
# | ステートメント/メソッド | 説明 |
---|---|---|
1 | MkDir | フォルダを新規に作成します。 |
2 | CreateFolder | フォルダを新規に作成します。 ※FileSystemObjectを使用します。 |
めい
2パターンをご紹介しましたが、基本的に挙動に違いはありません。
基本情報
MkDirステートメント
構文
構文
MkDir Path
※緑色は引数です。
引数
# | 引数 | 必須/任意 | 説明 |
---|---|---|---|
1 | Path | 必須 | フォルダパスを指定します。 フォルダ名で指定での指定も可能です。 その場合はカレントフォルダにフォルダが作成されます。 |
既に存在しているフォルダを指定するとエラーとなります。
使用の際は、フォルダの存在チェックを実施するなどの工夫をしましょう。
【Excel VBA】フォルダの存在チェック(FileSystemObject FolderExists)
はじめに フォルダを取り扱うプログラムを書く場合、必ずフォルダの存在チェックを実施しましょう。 FileSystemObjectのFolderExistsメソッドを使用するのがオススメで…
CreateFolderメソッド
FileSystemObjectを使用し、フォルダを作成するにはCreateFolderメソッドを使用します。
構文
構文
FileSystemObject.CreateFolder(Path)
引数
# | 引数 | 必須/任意 | 説明 |
---|---|---|---|
1 | Path | 必須 | フォルダパスを指定します。 フォルダ名で指定での指定も可能です。 その場合はカレントフォルダにフォルダが作成されます。 |
既に存在しているフォルダを指定するとエラーとなります。
使用の際は、フォルダの存在チェックを実施するなどの工夫をしましょう。
サンプルコード
フォルダを作成する(MkDirステートメント)
サンプルコード
Public Sub createFolderForMkDir()
Dim createFolderPath As String ' 作成フォルダパス
' 作成フォルダパスの設定
createFolderPath = "C:\vba-hack\TestFolder"
' ファイル作成
MkDir createFolderPath
End Sub
フォルダを作成する(CreateFolderメソッド)
サンプルコード
Public Sub createFolderForFSO()
Dim fso As New FileSystemObject ' FileSystemObjectインスタンス
Dim createFolderPath As String ' 作成フォルダパス
' 作成フォルダパスの設定
createFolderPath = "C:\vba-hack\TestFolder"
' ファイル作成
fso.CreateFolder (createFolderPath)
End Sub
当日の日付のフォルダを作成する
サンプルコード
Public Sub createFolderForToday()
Dim fso As New FileSystemObject ' FileSystemObjectインスタンス
Dim createFolderPath As String ' フォルダ作成パス
Dim todayFolderName As String ' 当日日付
' 当日日付(フォルダ名)取得
todayFolderName = Format(Date, "yyyymmdd")
' 作成フォルダパスの設定
createFolderPath = "C:\vba-hack\" & todayFolderName
' フォルダの存在チェック
If Not fso.FolderExists(createFolderPath) Then
' 日付フォルダが存在しない場合
' フォルダ作成
fso.CreateFolder (createFolderPath)
End If
End Sub
共通化のサンプルコード
呼び出し – メインプロシージャ
サンプルコード
Public Sub createFolder()
Dim createFolderPath As String ' フォルダ作成パス
' フォルダ作成パスを設定
createFolderPath = "C:\vba-hack\"
' フォルダの作成
Call createFolderForToday(createFolderPath)
End Sub
当日の日付のフォルダを作成 – サブプロシージャ
サンプルコード
Public Sub createFolderForToday(ByVal createFolderPath As String)
Dim fso As New FileSystemObject ' FileSystemObjectインスタンス
Dim todayFolderName As String ' 当日日付
' 当日日付(フォルダ名)取得
todayFolderName = Format(Date, "yyyymmdd")
' 作成フォルダパスの設定
createFolderPath = createFolderPath & todayFolderName
' フォルダの存在チェック
If Not fso.FolderExists(createFolderPath) Then
' 日付フォルダが存在しない場合
' フォルダ作成
fso.createFolder (createFolderPath)
End If
End Sub
めい
フォルダを作成したいフォルダパスを渡すと当日日付のフォルダを作成するロジックです。
セルに入力されたフォルダ名を一括で作成する
サンプルコード
Public Sub createFolderForCellValue()
Dim fso As New FileSystemObject ' FileSystemObjectインスタンス
Dim createFolderPath As String ' フォルダ作成パス
Dim folderNameArr As Variant ' 作成フォルダ名 配列
Dim folderName As Variant ' 作成フォルダ名
' カレントディレクトリを変更
ChDir "C:\vba-hack"
' 作成するフォルダ名をセルから取得
folderNameArr = Range(Cells(1, 1), Cells(3, 1))
For Each folderName In folderNameArr
' フォルダの存在チェック
If Not fso.FolderExists(folderName) Then
' 日付フォルダが存在しない場合
' フォルダ作成
fso.CreateFolder (folderName)
End If
Next folderName
End Sub
実行前
実行後
最後に
今回は、フォルダを新規作成する方法について解説しました。
本記事が、皆さんのお力になれば幸いです!
コメント