VBAと日々のこぼれ話

  1. VBA

【VBA】任意の場所に実行日毎のフォルダを作りたい

任意の場所に実行日毎のフォルダを作りたい

任意名のフォルダを作るだけだと面白くないので、同じ場所に実行日毎にフォルダを作るコードにしてみました。
※フォルダを作成するというサンプルコードはよく見かけるのでちょっと色気を出しただけともいう。

<仕様>
1.フォルダを作成したい場所を決める
2.フォルダ名を決める(実行日の現在の日付を設定)
3.作成したい場所に同名フォルダが存在するか確認
3-1.存在している場合、
メッセージを設定
3-2.存在していない場合、
フォルダを作成
メッセージを設定
4.メッセージを表示
5.処理終了

頭を使うのはフォルダに関する操作(存在確認・新規作成)についてです。
書き方としては以下の二通りあります。

1.Dir関数・Mkdirステートメント
2.ファイルシステムオブジェクト(FSO)のFolderExistsメソッド・CreateFolderメソッド

今回は、どちらも全く同じ動きになるようにコードを書いてみました。

【スポンサーリンク】



任意の場所に実行日毎のフォルダを作る

Dir関数・Mkdirステートメント Ver.

ファイルシステムオブジェクト(FSO) Ver.

共通の説明

1~2.フォルダ作成場所・フォルダ名・作成フォルダのフルパスを別々に変数に設定しているのは、後の処理でメッセージ表示に使いたかったらです。一つの変数に初めから作成フォルダのフルパスを設定してもフォルダ作成処理に影響はありません。

3.同じ場所に同名のフォルダは共存できません。
既に存在していた場合、フォルダ作成の実行エラーになるのを防ぐためフォルダの存在チェックを実施しています。

こうして比べてみると、Dir関数・Mkdirステートメントを使ったものとFSOのメソッドを使ったものとコード長さもそんなに変わりませんね。
FSOは、ファイル(ドライブ・フォルダ・ファイル)の操作に対して使い勝手が良いのでより複雑な動きで重宝します。ですので、私はファイル操作ではFSOを使います。

参照設定について

FSOは、参照設定「Microsoft Scripting Runtime」が必要です。
ただ今回は、CreateObject関数でオブジェクトへの参照を作ることで、参照設定が不要なコードにしています。
参照設定より処理が遅くなるそうですが、サンプルコードのように1実行で1回きりの処理だと全然分かりませんし、計測はしていませんが恐らく速度は変わりません。使い終わったら最後にオブジェクトを解放します。

【スポンサーリンク】



VBAの最近記事

  1. 【VBA】CSVを1行ずつ処理したい

  2. Excelシートの最終行を取得したい その1

  3. 【VBA】未だに苦手としていること

  4. 【VBA】モジュール先頭に記述する4種類のOption キーワード ステートメント

  5. 【VBA】同じ階層体系のフォルダを量産したい

関連記事

【スポンサーリンク】




PAGE TOP