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プロパティを使っていますので、個人用マクロブックにこのプロシージャを入れて使うことはできません。この関数を使いたいブックに入れておいてください。
- Newer:誤って送信者を禁止してしまった
- Older:迷惑メール対応−送信者の禁止
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ブック名・ファイル名を取得するユーザー定義関数