Excel VBA:ファイル名から拡張子のみ取得|LenとMid関数を使用

Excel VBAでファイル名から拡張子を取得する方法です。




Homeに戻る > Excel ファイル操作のTipsへ

例えばファイルを別名でコピーしたい場合などに、拡張子だけ取り出したい時があります。

拡張子があれば「新規ファイル名+拡張子」でコピーすることができます。

そんな時に使用するVBAを掲載しています。

ここではFunction形式の「ExGetExt」プロシージャーを作成しました。

この元のファイル名を引数にプロシージャーを呼び出せば、拡張子だけを取り出し戻します。

やり方は、Len関数でファイル名の長さ分後ろからループし、Mid関数で一文字づつ「.(ピリオド)」かどうかチェックします。

「.(ピリオド)」が見つかれば、それまでの文字が拡張子になります、

Len関数の構文

Len(string)

  • string:対象となる文字列

Mid関数は、文字列の指定した位置から、指定文字数を取り出す関数です。

Mid関数の構文

Mid(string, start[, length])

  • string:対象となる文字列
  • start:抜き出す文字の位置を指定
  • length:(省略可能)抜き出す文字の長さを指定

省略すると、引数startから後ろの全ての文字列が返ります。

Mid関数を使用した「Excel VBAでフルパスからファイル名のみ取得する」を掲載していますので、参考にしてください。



ファイル名から拡張子を取得するVBA

Excel VBA 呼び出し側

Private Sub CommandButton1_Click()
    Dim ext As String
    
    '「xls」が戻ります。
    ext = ExGetExt("C:\Documents and Settings\in\My Documents\Book1.xls")
End Sub

Excel VBA 標準モジュールコード

実行順

  1. Len関数でファイル名の文字数を取り出し、Forでループします。
  2. 「For 文字数 To 1 Step -1」で、末尾の文字位置からループできます。
  3. Mid関数で一文字取出し、「.(ピリオド)」かどうかチェックします。
  4. 「.(ピリオド)」でならば、Mid関数でそれまでの文字列を取り出し、プロシージャーから抜けます。
'拡張子を取得
Private Function ExGetExt(sfina As String) As String
    Dim i As Long
    Dim s1 As String
    
    ExGetExt = ""
    'ファイル名の最後の文字から「.」を探す
    For i = Len(sfina) To 1 Step -1
        If Mid(sfina, i, 1) = "." Then
            '拡張子を取得
            ExGetExt = Mid(sfina, i + 1)
            Exit For
        End If
    Next
End Function

Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved