Memorandum

拡張子の取得

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

ポイント

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


サンプルコード

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

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]から後のすべての文字が返る。

GetOpenFilename

参照

ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.