拡張子の取得

拡張子の取得

 ファイルパスやブック名から、拡張子を取得するサンプルコードとメモです。

ポイント

 ・UCase関数
 ・InstrRev関数
 ・Mid関数


サンプルコード

ファイルパス・ブック名から拡張子の取得

Sub Get_Ext_Sample()
    Dim strExt As String
    Dim strFilePath As String
    'GetOpenFileNameでファイルを選択
    strFilePath = Application.GetOpenFilename("画像データ,*.png;*.bmp;*.jpg;*.gif")
    If UCase$(strFilePath) = "FALSE" Then Exit Sub
    strExt = Get_Extension(strFilePath)
    If Len(strExt) = 0 Then Exit Sub
    MsgBox "拡張子は" & strExt
End Sub
'-------------------------------------------------------------------------------------------------------

Function Get_Extension(ByVal Path As String) As String
    Dim i As Long
    i = InStrRev(Path, ".", -1, vbTextCompare)
    If i = 0 Then Exit Function
    Get_Extension = Mid$(Path, i + 1)
End Function

メモ

◆関数名の後の「$」
 次の関数は関数名にドル記号「$」を追加すると、文字列型 (String) の値を返す。
 これらの関数は、ドル記号を付けずに使用すると、バリアント型(Variant) の値を返す。
 使用方法と構文は、文字列型(String)もバリアント型 (Variant)も同じ。
 「$」を付けたほうが処理速度が速い

 Chr$ ChrB$ Command$ CurDir$ Date$ Dir$ Error$ Format$ Hex$
 Input$ InputB$ LCase$ Left$ LeftB$ LTrim$ Mid$ MidB$ Oct$
 Right$ RightB$ RTrim$ Space$ Str$ String$ Time$ Trim$ UCase$


◆UCase関数
 指定したアルファベットの小文字を大文字に変換する関数。
 小文字以外の文字は影響を受けないが、日本語を含む文字列すると正常に変換ができない。

 構文:UCase(string)
 参考:大文字→小文字はLCase関数

◆InstrRev関数
 ある文字列の最後から、指定された文字列を検索し、最初に見つかった文字位置を返す。文字位置は、先頭からその位置までの文字数。

 構文:InstrRev(stringcheck, stringmatch[, start[, compare]])

 [stringcheck]
  必ず指定。検索を行う文字列を指定。
 [stringmatch]
  必ず指定。検索する文字列を指定。
 [start]
  省略可能。検索の開始位置を指定。省略すると「-1」が使用され、最後の文字位置から検索する。
 [compare]
  省略可能。文字列の比較のモードを表す数値を指定。省略すると、バイナリ モードで比較。
  【設定値 / 値 / 説明】
   ・vbUseCompareOption / -1 / Option Compareステートメントの設定をもとに比較。
   ・vbBinaryCompare / 0 / バイナリ モードで比較。※
   ・vbTextCompare / 1 / テキスト モードで比較。※
   ・VbDatabaseCompare / 2 / Microsoft Access用。データベースの設定に基づいて比較。

 ※テキストモードでは「大文字・小文字」「全角・半角」「ひらがな・カタカナ」を同じものと判定する。
 参考:先頭からの文字列の検索はInstr関数

◆Mid関数
 文字列から指定した文字数分の文字列を返す。

 構文:Mid(string, start[, length])
 [string]
  必ず指定。取り出される文字列を指定。
 [start]
  必ず指定。引数[string]の先頭を「1」として、どの位置から取り出すか指定。
  指定した値が[string]の文字数を超える場合は、長さ「0」の文字列 ("") を返す。
 [length]
  省略可能。取り出す文字数を指定します。省略した場合は[start]から後のすべての文字が返る。

◆GetOpenFilename
 参照

Excel Tips for Teachers

Copyright (C) 2009- 坂江 保 All Rights Reserved.