CELL関数・FIND関数・MID関数を駆使して、ワークブック名をセルに表示させる方法をご紹介しました。
ご紹介しておいて何ですが、実はあの方法で上手くいかないケースもあります。
フォルダ名やファイル名に「[」や「]」が使われているとダメなのです。
FIND関数で「[」や「]」を見つけて文字列を取り出している点がネックになります。頻繁にあることではないでしょうがパス内に「[」「]」が存在していれば、正しくない箇所を切り出してしまうのです。
パスに「[」または「]」が存在していても正しくブック名を取得するには、VBA(Visual Basic for Applications)でユーザー定義関数を作成しましょう。
Function BookName() As String
Application.Volatile
BookName = ThisWorkbook.Name
上記のコードをVBE(Visual Basic Editor)を起動して標準モジュールに貼り付け後、ワークシート上のセルに「=BookName()」と入力すればワークブック名が表示されます。
この方法なら、「[」「]」がパスに入っていてもOKです。
保存していないワークブックでもOKです。
ただし、[名前を付けて保存]を使って別の名前で保存しなおしたときには、セルに表示されるブック名は即座には更新されません。残念ながら。
そのような場合は、名前を付けて保存後に[F9]キーを押すなどして再計算をさせてください。
なお、Volatileメソッドを使用しているので、計算式がたくさん含まれるようなファイルでこのユーザー定義関数を使うと、処理が重くなってしまうことがあります。その場合、ユーザー定義関数にするより、イベントプロシージャでファイル名・ワークブック名をセルに入力する、というような方法で回避するといいんじゃないかと思います。
ThisWorkbookプロパティを使っていますので、個人用マクロブックにこのプロシージャを入れて使うことはできません。この関数を使いたいブックに入れておいてください。
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ブック名・ファイル名を取得するユーザー定義関数
- Newer:誤って送信者を禁止してしまった
- Older:迷惑メール対応−送信者の禁止
TrackBack:4
- TrackBack URL
- ワークシート名をセルに表示 from インストラクターのネタ帳
- 対象:Excel 97,2000,2002,2003 ワークシート関数を使ってブック名を表示させる方法では、上手くワークブック名が取得できない場合があるとこととその対策をご紹介しました。 同様の問題は、ワークシート関数を使ってシート名をセルに表示させる場合にもやっぱり発生しま...
- ブック名を表示する−4.0マクロ関数 from インストラクターのネタ帳
- 対象:Excel 97,2000,2002,2003 ワークブック名をセルに表示させるために、ワークシート関数を駆使する方法と、ユーザー定義関数を利用する方法をご紹介しました。 他にもブック名をセルに表示させる方法があります。...
- 拡張子なしでファイル名・ワークブック名を取得する−LEFT関数・FIND関数 from インストラクターのネタ帳
- 対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007 ファイル名・ワークブック名を取得するユーザー定義関...
- 拡張子なしでファイル名を取得するユーザー定義関数 from インストラクターのネタ帳
- 対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007 ファイル名・ワークブック名を取得するユーザー定義関...