Excel VBAでファイル名から拡張子を除く:For Next・Mid・If関数

ファイル名から拡張子を取り除くVBAを掲載しています。




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

拡張子とは、ファイル名のピリオドから末の部分でファイルの種類を表しています。

例えば、エクセルなら「xls」、ワードなら「doc」、テキストファイルなら「txt」などです。

取得したファイル名が、利用したい種類かどうか調べたい場合など、下記のコードで拡張子のみ取り出すことができます。

方法は、ファイル名の末文字から1文字づつ取り出し「.」かどうかチェックしピリオドの場合、それまでの文字列が拡張子になります。

[主な拡張子]

  • bak : バックアップファイル
  • bmp : Windowsビットマップ
  • gif : GIF画像
  • jpg : JPEG画像
  • png : PNG画像
  • wav : Windowsの音声ファイル
  • mp3 : MP3形式で圧縮された音声ファイル
  • mpg : MPEG形式で圧縮された動画
  • html : HTMLファイル
  • mid : ・MIDIの音楽
  • lzh : LHA 圧縮ファイル
  • zip : zip 圧縮ファイル
  • exe : WindowsやDosなどの実行可能ファイル

関連するTipsの「Excel VBAでフルパスからファイル名のみ取得する|Mid関数を使用」も参照してください。



呼び出し側のVBA

「book2.xls」を引数にしています。

Private Sub GetFileOnly()
    Dim makefile As String
    
    '「book2」が戻ります
    makefile = GetFileNameOnly("book2.xls")
End Sub

Excel標準モジュールコード

  • 引数のファイル名の長さだけ、Forでループします。
  • Mid関数で1文字取り出します。
  • If関数でピリオドかどうか比較し、ピリオドならばループを抜けます。
  • ピリオドまでの文字列がファイル名になります。
  • ピリオドが見つからなければ、空文字を返します。
'拡張子を除く
Function GetFileNameOnly(sfina As String) As String
    Dim i As Integer
    Dim nlen As Integer
    Dim s1 As String
    Dim s2 As String

On Error GoTo Errsub
    s2 = ""
    For i = 1 To Len(sfina)
        s1 = Mid$(sfina, i, 1)
        If s1 <> "." Then
            s2 = s2 + s1
        Else
            Exit For
        End If
    Next
    GetFileNameOnly = s2
    Exit Function
Errsub:
    GetFileNameOnly = ""
End Function

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

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


Copyright (c) Excel-Excel ! All rights reserved