業務改善ツールを作っていると、Excelの素晴らしさにいつも驚かされる。
ルーティンワークを効率化するにはExcelに限る!
今日はとある点検作業用のツールを作ろうと考えていたんですが、
『使用しているExcelファイルの保存パスがセルに読み出せたら良いのになぁ』
とか考えていたら、普通にあるんですね。
しかも関数を使って簡単に表示できる(^^♪
今まで一体、何にビビッて検索しなかったのやら・・・(笑)
その関数がCELL関数。
文法は、CELL(検査の種類,対象範囲)
これだけ!つまり簡単(^^♪
『検査の種類』というと、何を調べたいのか。
addressだったらセルの場所を、colだったらセルの列番号を。
今回使うのはfilename
つまりファイルの名前だ。
CELL(filename,A1)
これはA1セルを含んでいるファイルの名前・・・つまり操作しているファイルの名前。
ファイルが保存されているパスとファイル名を表示してくれます。
下記のような結果が帰ってきます。
C:\work\folder\[テストファイル.xls]Sheet1
※シート名とかは実際の値が反映されますので悪しからず
フルパスとファイル名がこんな簡単に得られるなんて・・・!
しかも関数なので変更が生じても自動で対応してくれる!!
・・・マクロでやるかぁ(^^;)
と及び腰だった自分を叱ってあげたい。
何が良いって関数がシンプルだから使用者個人に管理を任せられるところ!(^^)!
ちなみに上記の結果からパスだけを残したいなら、Left関数とFind関数を組み合わせて使えば良い。
Left関数は対象セル内の左から〇〇文字を取得できます。
Find関数は対象セル内の特定の文字列が何文字目にあるかを調べることができます。
Left関数を使って『〇〇文字目(Find関数で調べる)の左手前までを取得』すれば良いのです(^^♪
それぞれの関数の文法はこの通り。
LEFT(対象のセル, 文字数)
FIND("目印の文字列", 対象のセル)
これを使って、CELL(filename,A1)の結果からフルパスだけを取り出したいのだから、式にすると下記の通りですね(^^♪
Left(CELL(filename,A1),Find("[",CELL(filename,A1))-1)
結果⇒C:\work\folder\
[テストファイル.xls]Sheet1の左手前まで取得したかったので、"[" の位置を調べて1を引いたということですね(^^♪
入れ子になっていると分かり辛く感じますが、何がしたいかが明白になると理解しやすいですね(^^)
ファイル名を取得したい場合にもRIGHT関数を応用すれば簡単に出来そうですが、よりシンプルに取り出したいなら色々な方法があるようですね。
関数って僕が知らないだけで色々な可能性を秘めているんですね(^^♪
とは言っても、フルパスを得たことで遂にもう一歩進めるようになり、業務改善を試みるなら遂にマクロを手に取らないといけなさそうですが・・・(^^;)
具体的に言うと、指定した画像ファイルをExcel内に取り込みたい。
流石にこれは関数だけでは無理ですよね(´;ω;`)
操作を記録するマクロくらいなら使ったことあるんですが・・・
勉強するしかないですね!