← コード一覧へ戻る
実務パス・拡張子

拡張子を取得する(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

図で見る操作の流れ

イメージ図

コードに沿った概念図です。実際の画面や実行結果ではありません。

  1. 入力文字列

    fileName = "sample.xlsx"

  2. マクロ:最後の区切りを探す

    InStrRevで最後のピリオド位置を取得

  3. 結果

    ピリオドの後ろの「xlsx」を取り出して表示

ピリオドなし・末尾ピリオドなら「拡張子なし」。実在ファイルは不要です。フルパスではなくファイル名だけを渡します。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    fileNameへパスを除いたファイル名を入れます。

  3. 3

    実行するSubの内側にカーソルを置き、F5キーを押します。

  4. 4

    sample.xlsxならxlsx、READMEなら拡張子なしになります。archive.tar.gzなら最後のgzです。

使っている機能の公式ドキュメント(Microsoft Learn)