同名のファイルの存在を確認して、被らないファイル名を生成
- yuji fukami
- 2024年12月29日
- 読了時間: 2分
<概要>
今回は同名のファイルの存在を確認して、被らないファイル名を取得する汎用プロシージャの紹介です。
Excelブックやテキスト、CSV、PDFなど特定のファイルを出力する際にすでに同じファイル名のものが存在する場合、「上書きするか」「別名で保存するか」の二択に分かれてきます。
この二択のうち、別名で保存する場合にすでに存在するファイルと被らないファイル名を生成する必要があります。
例えばファイル名が「Sample.txt」がある場合は、被らないファイル名は「Sample_(1).txt」。次に被らないファイル名は「Sample_(2).txt」のように番号を増やしていく方法があります。
紹介する汎用プロシージャ「GetUniqueFileName」では、第1引数に対象ファイルのフォルダパス、第2引数で保存しようとするファイルのファイル名、第3引数で帰ってくるファイル名に拡張子を付けるかどうかのTrue/Falseを指定できるようにしています。
<実行例>
実行例のサンプルコードは次の通りです
実行中のマクロ付きブックを、「Sample.xlsm」というファイル名でコピーする処理です。
繰り返して実行すると下記の通りに被らないファイル名で順次ファイルが生成されているのが確認できます。

<関連コード>
今回の汎用プロシージャおよびサンプルコードでは、下記の別で紹介している汎用プロシージャを使用しています。
・ConvOneDrivePath_LocalPath → https://www.softex-celware.com/post/convonedrivepath_localpath
・GetExtension → https://www.softex-celware.com/post/getextension
・FileExists → https://www.softex-celware.com/post/fileexists
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。


コメント