エクセル ファイルのフルパスから拡張子のみを取得 Split関数(Excel VBA)

【本日のミッション】

ファイルのフルパス「 C:\VBA\File.xlsx」から Split関数 を使用して、拡張子部分の  「xlsx」 のみを取得せよ。

ミッションの概要

ここでは、「Split関数」という関数を使用して、拡張子を取り出す方法をご紹介します。

ファイルのパスをSplit関数を使って「.」で区切ると、前半は「C:\VBA\File」、後半は「xlsx」に分けることができます。これで拡張子を取り出すことができます♪

C:\VBA\File.xlsx

↓↓↓↓↓↓↓↓↓

C:\VBA\File」「.」「xlsx

プロシージャ

Sub フルパスから拡張子のみ取得()
    '【変数】
    Dim Pt As String  'ファイルパス
    Dim fn As Variant 'ファイル名配列
    
    '■拡張子の取得
    Pt = "C:\VBA\File.xlsx"     'ファイルパス指定
    fn = Split(Pt, ".")         'ファイル名配列
    MsgBox fn(UBound(fn))

End Sub

フルパスから拡張子のみ取得」プロシージャのどこかにカーソルを置いてF5キーをクリックしてください。

拡張子だけが取得できましたね♪

エクセル ファイルのフルパスから拡張子のみを取得 Split関数(Excel VBA)

Split関数

Split関数はある文字列(Expression)を、指定した区切り文字(Delimiter)で分割した 1 次元配列を返します。

Split (Expression , Delimiter , Limit , Compare)

引数名説明省略
Expression区切り文字を含む文字列式を指定します。×
Delimiter文字列を区切る、区切り文字を指定します。
省略すると、区切り文字にスペース (” “) が使用されます。
Limit返す配列の要素数を指定します。
-1(既定値)にすると、全ての文字列を含んだ配列を返します。
Compare文字列式を比較するモードを指定します。
省略すると、Option Compareステートメントの設定で比較します。
「vbBinaryCompare」バイナリ モードで比較を行います。
「vbTextCompare」テキスト モードで比較を行います。
テキストモードは全角半角・大文字小文字の区別をしません
fn = Split(Pt, ".")

第1引数の「区切り文字を含む文字列(Expression)」は、変数「Pt」にセットしている

C:\VBA\File.xlsx

という文字列式になります。

第2引数の「区切り文字列(Delimiter)」は

.   ←ピリオド

です。

C:\VBA\File.xlsx

が区切り文字「.」で区切られ、配列「fn」に格納されると下記の通りになります。

エクセル ファイルのフルパスから拡張子のみを取得 Split関数(Excel VBA)

UBound関数

配列(ArrayName)で使用できる最大の添え字を返します。

UBound (ArrayName , Dimension)

引数名説明省略
ArrayName配列変数の名前を指定します。×
Dimension添え字の上限を調べたい配列の次元を指定します。
省略すると、1 次元とみなされます。
UBound(fn)

上記Split関数で、配列fnには fn(0)~fn(1)までの要素が入っています。
「添え字」とは、配列fn()の括弧内の数字のことです。
今回は1次元配列なので、第2引数の「添え字の上限を調べたい配列の次元(Dimension)」は省略しています。

エクセル ファイルのフルパスから拡張子のみを取得 Split関数(Excel VBA)

添え字は0~1なので、最大値は UBound(fn)=1 になります。

fn(UBound(fn)) = fn(1) = xlsx

エクセル ファイルのフルパスから拡張子のみを取得 Split関数(Excel VBA)

これでファイル名「xlsx」のみ取り出すことができます(#^.^#)

【参考】

指定したフォルダ内のファイル名全てを取得(Excel VBA)
変数でよく使われる「buf」「tmp」の意味
Dir関数が取得するファイルの順番
指定したフォルダ内のフォルダ名全てをGetAttrを使って「エラー53 ファイルが見つかりません。」を出さずに取得(Excel VBA)
GetAttr関数とAnd演算子でビット演算の使い方 ファイルやフォルダの属性を取得
フォルダ名だけを取得したい時に出てくる 「.」 と 「..」 とは?
指定したフォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)
CreateObject(“Scripting.FileSystemObject”) を使ってサブフォルダを取得
再帰処理とは?フォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)
指定したフォルダ内のサブフォルダのフォルダ名を全部取得(Excel VBA)
再帰処理とは?フォルダ内のサブフォルダのフォルダ名を全部取得(Excel VBA)
参照渡し「ByRef」と値渡し「ByVal」の違い(Excel VBA)
ファイルのフルパスからファイル名のみを取得 InStrRev関数(Excel VBA)
指定したフォルダの全ての階層のフォルダ名・サブフォルダ名・ファイル名を取得(Excel VBA)
FileSystemObjectとは?CreateObject 関数 FolderExists・GetFolderの使い方
FileSystemObject CreateObject関数を使う方法・ 参照設定を使う方法 違いを理解してエラー防止
再帰処理とは?指定したフォルダの全ての階層のフォルダ名・サブフォルダ名・ファイル名を取得(Excel VBA)
ファイルのフルパスからファイル名のみを取得 Split関数(Excel VBA)
Callステートメントとは 引数 括弧()の使い方(Excel VBA)
指定したフォルダ内から「特定の文字を含まないファイル名」を取得(Excel VBA)
ワイルドカードとは。使い方いろいろ。(Excel)
Dir関数の使い方。ファイル名やフォルダ名の取得方法。(Excel VBA)
指定したフォルダのファイル名を取得し、そのファイル名を一括で変換(Excel VBA)
Excel起動時に「コンパイルエラー」。64ビット システムで Declareステートメントに、PtrSafe属性を設定(Excel VBA )
「ファイルを開く」ダイアログボックス から ファイル名を取得(Excel VBA)
「ファイルを開く」ダイアログボックス から 複数 ファイル名を取得(Excel VBA)
指定フォルダ内のサブフォルダ全てをフォルダ構成のみ(空フォルダ)を別フォルダにコピー(Excel VBA)
再帰処理とは?指定フォルダ内のサブフォルダ全てをフォルダ構成のみ(空フォルダ)を別フォルダにコピー(Excel VBA)
エクセル ファイルのフルパスから拡張子のみを取得 Split関数(Excel VBA)

■■■スポンサーリンク■■■