Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 改訂版・拡張子なしでファイル名を取得するユーザー定義関数

改訂版・拡張子なしでファイル名を取得するユーザー定義関数

対象:Excel2000, Excel2002, Excel2003, Excel2007

拡張子ぬきでファイル名を取得するユーザー定義関数についてご紹介しました。

ですが、、はてなブックマークで、
「ファイル名にドットがある場合にも対応するには右から検索すべき。」
とのコメントをいただきました。

[スポンサードリンク]

確かに!ご指摘ありがとうございます。

▼ファイル名・ワークブック名を取得するユーザー定義関数
※引数に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

End Function

変更箇所は、If文のElse側です。

元々はInStr関数を使っていた箇所をInStrRev関数にしています。

InStr関数で、左から「.」を探していた処理を、
InStrRev関数で、右から「.」を探すように変更しています。

ちなみにInStrRev関数は、Excel 2000のVBA(Visual Basic for Applications)から使えるようになった関数なので、残念ながらExcel 97以前のバージョンでは上記のユーザー定義関数は使えません。

関連語句
自作関数

最終更新日時:2018-09-23 14:54

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 改訂版・拡張子なしでファイル名を取得するユーザー定義関数

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

検索


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

.