Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ブック名・ファイル名を取得するユーザー定義関数

ブック名・ファイル名を取得するユーザー定義関数

対象:Excel97, Excel2000, Excel2002, Excel2003

CELL関数・FIND関数・MID関数を駆使して、ワークブック名をセルに表示させる方法をご紹介しました。

ご紹介しておいて何ですが、実はあの方法で上手くいかないケースもあります。

フォルダ名やファイル名に「[」や「]」が使われているとダメなのです。

[スポンサードリンク]

FIND関数で「[」や「]」を見つけて文字列を取り出している点がネックになります。頻繁にあることではないでしょうがパス内に「[」「]」が存在していれば、正しくない箇所を切り出してしまうのです。

パスに「[」または「]」が存在していても正しくブック名を取得するには、VBA(Visual Basic for Applications)でユーザー定義関数を作成しましょう。

▼ワークブック名を取得するユーザー定義関数
Function BookName() As String

 Application.Volatile
 BookName = ThisWorkbook.Name

End Function

上記のコードをVBE(Visual Basic Editor)を起動して標準モジュールに貼り付け後、ワークシート上のセルに「=BookName()」と入力すればワークブック名が表示されます。

この方法なら、「[」「]」がパスに入っていてもOKです。
保存していないワークブックでもOKです。

ただし、[名前を付けて保存]を使って別の名前で保存しなおしたときには、セルに表示されるブック名は即座には更新されません。残念ながら。

そのような場合は、名前を付けて保存後に[F9]キーを押すなどして再計算をさせてください。

なお、Volatileメソッドを使用しているので、計算式がたくさん含まれるようなファイルでこのユーザー定義関数を使うと、処理が重くなってしまうことがあります。その場合、ユーザー定義関数にするより、イベントプロシージャでファイル名・ワークブック名をセルに入力する、というような方法で回避するといいんじゃないかと思います。

ThisWorkbookプロパティを使っていますので、個人用マクロブックにこのプロシージャを入れて使うことはできません。この関数を使いたいブックに入れておいてください。

関連語句
自作関数

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ブック名・ファイル名を取得するユーザー定義関数

「ユーザー定義関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.