GetUniqueFileName|重複しないファイル名を自動生成 | Excel VBA
- yuji fukami
- 2024年12月29日
- 読了時間: 2分
更新日:1月4日

<概要 (VBA ファイル名 重複)>
GetUniqueFileName は、指定したフォルダ内に同名ファイルが存在する場合に、ファイル名の末尾へ「_(数字)」を自動付与し、重複しないファイル名を生成する Excel VBA の汎用プロシージャです(VBA ファイル名 重複)。
ファイル保存処理では、既存ファイルの上書きやエラー回避が必須となります。
本プロシージャを使用することで、保存前にファイル名を調整する処理を共通化でき、実務での安全性と再利用性を高めることができます。
たとえば、Excelブックやテキスト、CSV、PDFなど特定のファイルを出力する際にすでに同じファイル名のものが存在する場合、「上書きするか」「別名で保存するか」の二択に分かれてきます。
この二択のうち、別名で保存する場合にすでに存在するファイルと被らないファイル名を生成する必要があります。
例えばファイル名が「Sample.txt」がある場合は、被らないファイル名は「Sample_(1).txt」。次に被らないファイル名は「Sample_(2).txt」のように番号を増やしていく方法があります。
GetUniqueFileName は、FileExists・GetExtension と組み合わせて使用する設計となっており、拡張子の有無や返却形式も柔軟に制御できます。
<実行例>
実行例のサンプルコードは次の通りです
実行中のマクロ付きブックを、「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
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。



