【エクセル関数】ブック情報取得「フルパス・ブック名・シート名・フォルダパス」
エクセルの関数の組み合わせで
ブックの情報(フルパス、ブック名、シート名、フォルダパス)を
抽出する方法をまとめます。
イメージ動画(音声はありません)
サンプルダウンロード
説明に使用しているエクセルファイルです
エクセルのブック情報の種類
エクセルのブック情報とは、作成中のエクセルブックや開いているブックに関する情報です。
具体的には以下の4つを指します。
- フルパス: ブックが保存されている場所を表す情報です。コンピュータのフォルダ構造を示しています。
- ブック名: エクセルブックの名前です。拡張子(.xls, .xlsx)も含まれます。
- シート名: ブック内のシートの名前です。
- フォルダパス: フルパスからブック名を除いた情報です。ブックが保存されているフォルダの場所を示しています。
「フルパス」の抽出方法
=SUBSTITUTE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),"[","")
関数の解説(読み飛ばしてOK)
この関数は、現在開いているエクセルブックのフルパスとブック名を抽出し、さらにブック名の前についている “[“(角括弧)を取り除く動作をします。
1. CELL(“filename”,A1)
CELL("filename",A1)
の部分は、A1セルが属しているブックのフルパス(フォルダパスとブック名)を取得します。ただし、A1セルが属しているブックが保存されていないとエラーが出るため、事前に保存が必要です。
2. FIND(“]”,CELL(“filename”,A1))-1
FIND("]",CELL("filename",A1))-1
の部分は、CELL("filename",A1)
で取得した文字列(フルパス)の中から “]” の位置を検索します。そしてその位置から1を引くことで、”]”の直前の位置を得ます。
3. LEFT(CELL(“filename”,A1),FIND(“]”,CELL(“filename”,A1))-1)
LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1)
の部分は、上で取得した “]” の直前の位置までの文字列を抽出します。つまり、この関数によってフルパスの中からフォルダパスと”[“とブック名(”[ブック名]”)の形で抽出されます。
4. SUBSTITUTE(LEFT(CELL(“filename”,A1),FIND(“]”,CELL(“filename”,A1))-1),”[“,””)
最後の SUBSTITUTE(LEFT(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)
関数の解説(読み飛ばしてOK)
このエクセルの関数は、現在開いているエクセルブックの名前(拡張子付き)を抽出する動作をします。
1. CELL(“filename”,A1)
CELL("filename",A1)
の部分は、A1セルが属しているブックのフルパス(フォルダパスとブック名)を取得します。ただし、A1セルが属しているブックが保存されていないとエラーが出るため、事前に保存が必要です。
2. FIND(“[“,CELL(“filename”,A1))+1 と FIND(“]”,CELL(“filename”,A1))-FIND(“[“,CELL(“filename”,A1))-1
FIND("[",CELL("filename",A1))+1
は、CELL("filename",A1)
で取得した文字列(フルパス)の中から”[“の位置を見つけて、その次の位置を示します。つまり、これはブック名(拡張子付き)の開始位置を特定します。
一方、FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1
はブック名(拡張子付き)の終了位置を特定します。具体的には、”]”の位置から”[“の位置を引いて1を引くことで、ブック名の長さ(文字数)を得ます。
3. 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)
の部分は、上で特定したブック名(拡張子付き)の開始位置と長さを元に、ブック名(拡張子付き)をフルパスから抽出します。
結果として、この関数により現在開いているエクセルブックの名前(拡張子付き)を得ることができます。
「シート名」の抽出方法
=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))
関数の解説(読み飛ばしてOK)
このエクセルの関数は、現在開いているエクセルブックの名前(拡張子付き)を抽出する動作をします。
1. CELL(“filename”,A1)
CELL("filename",A1)
の部分は、A1セルが属しているブックのフルパス(フォルダパスとブック名)を取得します。ただし、A1セルが属しているブックが保存されていないとエラーが出るため、事前に保存が必要です。
2. FIND(“]”,CELL(“filename”,A1))
FIND("]",CELL("filename",A1))
の部分は、CELL("filename",A1)
で取得した文字列(フルパス)の中から “]” の位置を検索します。これは、ブック名(拡張子付き)の開始位置を特定します。
3. LEN(CELL(“filename”,A1))-FIND(“]”,CELL(“filename”,A1))
LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))
の部分は、フルパスの全長から “]” の位置を引きます。これにより、ブック名(拡張子付き)の長さ(文字数)を得ます。
4. RIGHT(CELL(“filename”,A1),LEN(CELL(“filename”,A1))-FIND(“]”,CELL(“filename”,A1)))
最後の RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))
の部分は、上で計算したブック名(拡張子付き)の長さを元に、フルパスの右端からその長さ分の文字列を抽出します。これにより、ブック名(拡張子付き)を得ることができます。
この関数により、現在開いているエクセルブックの名前(拡張子付き)を抽出できます。
「フォルダパス」の抽出方法
=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1)
関数の解説(読み飛ばしてOK)
このエクセルの関数は、現在開いているエクセルブックのフォルダパスを抽出する動作をします。
1. CELL(“filename”,A1)
CELL("filename",A1)
の部分は、A1セルが属しているブックのフルパス(フォルダパスとブック名)を取得します。ただし、A1セルが属しているブックが保存されていないとエラーが出るため、事前に保存が必要です。
2. FIND(“[“,CELL(“filename”,A1))-1
FIND("[",CELL("filename",A1))-1
の部分は、CELL("filename",A1)
で取得した文字列(フルパス)の中から”[“の位置を検索します。そしてその位置から1を引くことで、”[“の直前の位置を得ます。つまり、これはフォルダパスの終了位置を特定します。
3. LEFT(CELL(“filename”,A1),FIND(“[“,CELL(“filename”,A1))-1)
最後に LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1)
の部分は、上で特定したフォルダパスの終了位置を元に、フォルダパスをフルパスから抽出します。
この関数により、現在開いているエクセルブックのフォルダパスを抽出することができます。
使った関数について
CELL関数
セルの書式、位置、または内容に関する情報を返します。
引用元:Microsoft
SUBSTITUTE関数
文字列内new_textのold_textを置き換える。
引用元:Microsoft
LEFT関数
文字列の先頭から指定された数の文字を返します。
引用元:Microsoft
RIGHT関数
文字列の末尾 (右端) から指定された文字数の文字を返します。
引用元:Microsoft
FIND関数
指定された文字列を検索し、その文字列が最初に現れる位置を左端から数え、その番号を返します。
引用元:Microsoft