拡張子ぬきでファイル名を取得するユーザー定義関数についてご紹介しました。
ですが、、はてなブックマークで、
「ファイル名にドットがある場合にも対応するには右から検索すべき。」
とのコメントをいただきました。
確かに!ご指摘ありがとうございます。
※引数にTRUEを指定するか何も指定しないと拡張子付きで、引数にFALSEを指定すると拡張子なしでファイル名を返すユーザー定義関数の例
Function BookName(Optional 拡張子 As Boolean = True) As String
Dim bk_name As String
Application.Volatile
bk_name = ActiveWorkbook.Name
If 拡張子 = True Then
BookName = bk_name
Else
BookName = Left(bk_name, InStrRev(bk_name, ".") - 1)
End If
変更箇所は、If文のElse側です。
元々はInStr関数を使っていた箇所をInStrRev関数にしています。
InStr関数で、左から「.」を探していた処理を、
InStrRev関数で、右から「.」を探すように変更しています。
ちなみにInStrRev関数は、Excel 2000のVBA(Visual Basic for Applications)から使えるようになった関数なので、残念ながらExcel 97以前のバージョンでは上記のユーザー定義関数は使えません。
最終更新日時:2018-09-23 14:54
- Newer:描画キャンバスの挿入はどこから?
- Older:この季節に「庄内平野」の検索が急上昇するワケ
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 改訂版・拡張子なしでファイル名を取得するユーザー定義関数