ちょっとしたときに今使っているファイル名やシート名を出力したいときってありませんか?
私の場合、たまにどこのフォルダの中のファイルで作業したか、記録しておくために印刷する紙面のフッターとかにパス付で、
\C:●●●\作業フォルダ\作業ファイル.xlsm
とかつけたりします。パスって以下のようにフォルダを上の方で取得できますが、いちいち取りに行くのも面倒・・
これらをいちいち打ち込んだり、コピペしてくるのは面倒なので、すぐに表示できるような関数を作成してみました!
こういうちょっとしたことでも簡単にできるようにしとかないとね・・
また、特定のファイルだけではなくて、どのExcelファイルでも今使っているファイルの名称やシート名を表示させたい場合にはアドインに登録しておけばOK!
今回のコードも短いのでアドインでユーザー定義関数を入れることができるということを確認する意味でもつくってみましょう。
Contents
ユーザー定義関数とは?
excelにはあらかじめ様々なワークシート関数が用意されていますね。代表的な例はSUM関数。
ワークシート上で『=SUM(”A1:A3″)』と入力するとセルA1からA3(つまりA1とA2とA3)の値の合計を計算することができます。
こういう関数を新しく自分で作れるというのがユーザー定義関数。ユーザー(使う人)が新たに定義する関数ということですね。
例えば消費税8%を入れる前の値段から入れた後の値段を計算する関数『taxin』(名前はかぶらなければ適当に変えてOK!)という関数を作ろうとすると、VBAで以下のように”Function”モジュールを作成するだけでOK!。
これを入れておけば、ワークシート上で例えば『=taxin(100)』と入力すると『108』という値を返して表示してくれます。
アクティブファイルのファイル名をパス付で表示させる
以下のように書けばOK!
ActiveWorkbook.Pathは現在アクティブになっている(使用している)ブックのパス(上でいうと「\C:●●●\作業フォルダ」の部分)を、ActiveWorkbook.Nameはファイル名(上でいうと「作業ファイル.xlsm」の部分)を表示させるためのコードです。それらの間に「\」をいれてつないだものをFnameとして返すという設定です。
ワークシート上では『=Fname()』と入力(かっこを忘れずに)するとパス付のファイル名が表示されます。
シート名を表示させるユーザー定義関数
以下のように書けばOK!
まず最初に使用しているブックのワークシートの数を数えて、『=Sname(3)』のかっこの中に入れた数字(ここでは3)がそれ以下(で1以上)であれば、左からその数字の番のシート(ここでは左から3つ目)の名前を返すというものです。
あとがき
ユーザー定義関数を使いたいファイルでVBAを用いて作成しました。
上でも書きましたがこれをアドインに入れ(アドインにするファイルに上記のコードを入力する)ても使用可能。
自作の関数を他のExcelファイルを使用しているときでも汎用的に使用できるというのは非常に便利で重宝します。
どのExcelファイルでも使えるというアドインのメリットを活かすことで便利なユーザー定義関数がつくれると思いますので、ぜひトライしてみてください。
(そして便利なものがあったら教えてください。)