拡張子の取得2012.09.27
ファイルパス・ファイル名から、拡張子を取得するサンプルコードとメモです。
ポイント
・UCase関数
・InstrRev関数
・Mid関数
Excelマクロ管理ツール
サンプルコード
ファイルパス・ファイル名から拡張子の取得
Sub Get_Ext_Sample() Dim strExt As String Dim strFilePath As String 'GetOpenFileNameでファイルを選択 strFilePath = Application.GetOpenFilename("すべてのファイル,*.*") 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]から後のすべての文字が返る。