スポンサーリンク

開いているファイルの、ファイル名を取得する方法

関数の応用

ファイル名を取得する方法です。

エクセルの関数検索で、ファイル名とか、ファイルとかで検索しても出てこないのですが、CELL関数を使って、今使用しているファイルの、ファイル名(フルパス+シート名)を取得することができますので、やり方を紹介していきます。

 

CELL関数の機能を使う

セルの情報を取得することができる、CELL関数というものがあります。

関連の無さそうな名前ですが、このCELL関数で取得できる情報の中に、ファイル名もありますので、これを活用していきます。

使い方は簡単で、ファイル名を表示させたいセルに、下記の式をそのまま入力してください。

式:=CELL(“filename”,$A$1)

すると、ファイルの保存場所から、ファイル名、そしてシート名までが結果として表示されます。

 

使用上の注意

CELL関数を使うにあたって、少し注意点があります。

CELL関数の参照項目は入力しよう

参照項目は入力しようについては環境によって動作が違う可能性があります。
具体的に言うと、参照項目を省略しても大丈夫な場合もある。という事です。
(いつのまにか大丈夫になった?)
ですが、参照項目を入力した方が安全である事に違いはないので、省略しないことをオススメするとともに、過去にこういう事例があったという事は残しておきます。

-----ここからの内容が古いかもしれません-------

今回は$A$1としていますが、B1でもC10でもいいので、なんかしらセルを参照させましょう。

省略してしまうと、想定外の結果が表示されてしまう事があります。

詳しくは、CELL関数についての記事、参照は省略しない方がいいの部分をご覧ください。

 

簡単に言うと、CELL関数で参照項目を省略すると、最後にアクションのあった場所の情報を取得する。という動作をしてしまいます。

どういう事かというと、=CELL(“filename”,$A$1)のように、$A$1(A1でもなんでもいいです)を指定しておくことで、この関数を使っているエクセルファイルのファイル名を取得してくれます。

多くの場合、これを望んでるんじゃないでしょうか。

ですが、=CELL(“filename”)のように参照項目を省略すると、直前にアクションのあったエクセルファイルのファイル名を取得してきます。

たとえば、AとBというエクセルファイルを2つ開いていて、Aのほうで=CELL(“filename”)という関数を用意したとします。

そしてBの方で何か編集作業をすると、Aに作った=CELL(“filename”)の結果が、Bのほうのファイル名を取得してしまいます。

そのため、何か意図がない限り、参照項目は省略せずに、A1でもB1でもなんでもいいので指定しておくことをお勧めします。

-----ここまでが古いかも情報-------

 

名前をつけて保存したら更新しよう

ファイルを上書き保存ではなく、名前をつけて保存で別のフォルダーに保存したり、ファイル名を変更して保存した場合、保存直後は変更前のファイル名が表示されてしまいます。

その場合は、ファイル内であればどこでもいいので、何か更新をかけてあげましょう。

例えば、F9キーで再計算をかけてあげたり、空いてるセルに適当な文字を入力してすぐ消したり。

ファイル名のみを取得する色々な手段

CELL関数を使うと、ファイル名だけではなく、どこに保存しているか、シート名は何かまで取得してしまいます。

必要な時はいいのですが、ファイル名だけが欲しい場合は、他の関数と組み合わせるなどして、不要な部分を削り落とす必要があります。

こればかりは絶対的な答えはありませんので、これから紹介する方法を駆使しながら、自分なりの式を作り上げてください。

ファイル名前後の[と]を目印に使う

CELL関数で取得したファイル名には、ファイル名の前後が[と]で囲まれています。

それを目印にして、FIND関数、MID関数を使って、ファイル名だけを取り出します。

式:=MID(CELL("filename",$A$1),FIND("[",CELL("filename",$A$1))+1,FIND("]",CELL("filename",$A$1))-FIND("[",CELL("filename",$A$1))-1)

仕組みとしては、MID関数の開始位置に、ファイル名から[を見つけた場所を指定。

次に、そこから何文字取得するかですが、ファイル名から[を見つけた場所から、]を見つけた場所までがファイル名なのですから、それを引き算してファイル名が何文字なのかを計算しています。

順を追って解説すると、まず[と]の位置が、数値にするとこうなります。

次に、ファイル名が何文字であるかを計算します。

終了位置から開始位置を引けば、ファイル名が何文字なのかわかります。

この考え方をMID関数に当てはめていったものが、冒頭の式になるわけです。

しかも、ファイル名自体に[ ]が使われていた場合は( )に変換されるので目印に最適です。

 

ルール化されたファイル名を活かし、ファイル名の一部を取得

例えば、セイウチ写真集yyyy年mm月号のように、一定のルールが決められていたとします。

そこから、MID関数とFIND関数と使ってyyyy年mm月の部分のみを取得する方法です。

今回はセイウチ写真集という単語が固定なので、これをMID関数の開始位置に使います。

次に、yyyy年mm月は文字数が固定なので、MID関数の文字数部分は数値で指定します。

式:=MID(CELL("filename",A1),FIND("セイウチ写真集",CELL("filename",A1))+7,8)

実際に使う場合は、赤文字の部分を変えて使ってください。

セイウチ写真集→目印になる単語
+7→目印単語の文字数
→表示させたい部分の文字数(今回はyyyy年mm月で8文字)

色々組み合わせてみよう

以上、CELL関数でファイル名を取得した後、MID関数やFIND関数で必要な部分のみを取得する方法を紹介してきました。

ですが、お使いの環境などによっては、その場に合わせて手を加える必要があるでしょうから、当記事を答えてして使うのではなく、一例として使ってもらえればと思います。

そのため、今回使ったCELL関数、MID関数、FIND関数についての知識を掘り下げる事で、より柔軟な対応ができるようになってきます。

他にも、RIGHT関数やLEFT関数、LEN関数なんかも活かせるんじゃないでしょうか。

また、ファイル名を抜き取る際、文字列操作にこういう考え方もありますので、参考にぜひご覧ください。

 

コメント

タイトルとURLをコピーしました