拡張子を取得する(InStrRevを使う場合)
ファイル名の最後のピリオドより後ろを拡張子として取り出します。ピリオドなし・末尾ピリオドなら拡張子なしと表示します。
実行前に確認
- 文字列を分けるだけなので実在ファイルは不要です。フルパスを渡す場合は先にファイル名を取り出します。隠しファイル名などの特殊な命名規則までは判断しません。
1サンプルコード
Sub Example4030()
On Error GoTo Failed
Dim fileName As String, p As Long, extensionName As String
fileName = "sample.xlsx"
p = InStrRev(fileName, ".")
If p > 0 And p < Len(fileName) Then extensionName = Mid$(fileName, p + 1)
If Len(extensionName) = 0 Then
MsgBox "拡張子なし"
Else
MsgBox extensionName
End If
Exit Sub
Failed:
MsgBox "処理を中止しました: " & Err.Description
End Sub図で見る操作の流れ
イメージ図コードに沿った概念図です。実際の画面や実行結果ではありません。
入力文字列
fileName = "sample.xlsx"
マクロ:最後の区切りを探す
InStrRevで最後のピリオド位置を取得
結果
ピリオドの後ろの「xlsx」を取り出して表示
ピリオドなし・末尾ピリオドなら「拡張子なし」。実在ファイルは不要です。フルパスではなくファイル名だけを渡します。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
fileNameへパスを除いたファイル名を入れます。
- 3
実行するSubの内側にカーソルを置き、F5キーを押します。
- 4
sample.xlsxならxlsx、READMEなら拡張子なしになります。archive.tar.gzなら最後のgzです。