Excel~ブックのファイル名を取得する関数

備忘録的な解説記事ですが、「Excel関数」の応用なのでExcel解説記事として掲載しておきます。
ちょっと複雑ですが覚えておくとなにかのときにとっても便利な方法です。

Excelでブック名(ファイル名)を取得する

あまり頻繁に使うものではないかも知れませんが、「今開いているExcelブック(ファイル)そのもののファイル名をシートのセルに表示したい」というようなことがあります。

VBAを使ったプログラミングであれば簡単に取得・表示ができますが、マクロやVBAは使いたくない、という場合に「関数」で取得・表示することが出来ます。

関数の書き方

もうこれは、取り敢えずおまじないのように以下の数式(関数)をコピペして使うのが良いかと思います。

=MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1)

長くて読みにくい、という方のために・・・

=MID(CELL(“filename”,A1),
FIND(“[“,CELL(“filename”,A1))+1,
FIND(“]”,CELL(“filename”,A1))-FIND(“[“,CELL(“filename”,A1))-1)

解説

CELL関数

上記のおまじない数式で最重要ポイントとなるのは「CELL」関数です。

CELL関数は「指定したセル(あるいは対処範囲)に関する情報を取得する」という関数で、取得できる情報は「filename(ファイルのフルパス、属するワークシート名)」「address(セルのアドレス$A$1など)」「contents(セルの値)」など、12種類あるそうです。

このうちの「filename」を取得すると、「セルの収まっているシートの属するブック(ファイル)のフルパスも含めてずら~~~~っと文字で返してくれる」という結果を得られます。

CELL関数で取得してファイルのフルパス+シート名は、例えば

C:\テストフォルダ¥[テストBook.xlsx]Sheet1

のような感じで、ブック名(ファイル名)が「[]」で囲まれて表示されます。
この[]の間に挟まれた部分がいわゆる「ファイル名」(の文字列)になるので、これを抽出すればファイル名を得られる、ということになります。

MID関数

MID関数は、指定した「文字列」の「○文字目~○文字目までを取り出す」という事ができる関数です。
上記CELL関数で取得したフルパス+シート名の文字列で”[”が何文字目にあって、”]”が何文字目にあるかがわかれば、その間の文字列(=ファイル名)を取り出すことが出来ます。

FIND関数

FIND関数は、指定した文字列の中から、指定した文字が何文字目に出てくるか?を数えて数値で返す関数です。

ということで、これらを組合せた(ちょっと複雑ですけど)数式が冒頭におまじないとしてご案内した数式です。

ちなみに、「ファイル名」を取得したいのであればファイル内のどのシートのどのセルを指定しても同じ結果が出ますので、上記の数式をコピーしてファイル名を表示したいセルへ貼り付けてあげればOK、というわけです。