VBA:パスのファイル名から拡張子を取り除く方法(Split・InStrRev)
VBAでツールを作っていると、ファイル名から拡張子部分を削除したい場合があります。
そのような場合に使えるサンプルコードを簡単ですが記事にしておきます。
◆ファイル名から拡張子を取り除く方法
サンプルのコードでは、以下の3ステップで拡張子を取り除いています。
- パスから拡張子を含むファイル名を取得
- InStrRev関数を使って、ファイル名の右側から「.」の位置を探して、左端からの位置を取得
- Left関数でファイル名の拡張子を除いた部分を取得
サンプルコード
パスにあるファイル名を取得し、拡張子を取り除いたものを戻すようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Function getFileName() As String Dim TargetPath As String Dim FNameArray As Variant Dim lastPathName As String Dim rightPoint As Long TargetPath = "C:\Users\xxxx\testフォルダ\test.xlsx" '//(1)パスから拡張子を含むファイル名を取得する' FNameArray = Split(TargetPath, "\") '" lastPathName = FNameArray(UBound(FNameArray)) '//(2)ファイル名の右端から"."を検索し、左端からの位置を取得する' rightPoint = InStrRev(lastPathName, ".") '//(3)Left関数で拡張子を除いたファイル名の文字数分を取得する' getFileName = Left(lastPathName, rightPoint - 1) End Function |
「InStrRev」関数
「InStrRev」関数は、文字列(ファイル名)の中から指定された文字列(「.」ピリオド)の位置を、最後の文字位置から検索し、最初に見つかった文字位置を返します。そのため、ここでは拡張子との区切りのピリオドの位置を検索してくれます。