VBA技術解説
フルパスをディレクトリ、ファイル名、拡張子に分ける

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
公開日:2017-04-15 最終更新日:2021-03-04

フルパスをディレクトリ、ファイル名、拡張子に分ける


ファイルのフルパスを、ディレクトリ、ファイル名、拡張子に分けます。


FileSystemObjectを使う方法と、VBA関数(InStrRev)で分けるVBAのサンプルコードになります。


FileSystemObject

Dim sFile As String
sFile = "C:\Users\hogehoge\Desktop\サンプル.txt"

Dim objFSO As New FileSystemObject

'ディレクトリ
MsgBox objFSO.GetParentFolderName(sFile)
'ファイル名
MsgBox objFSO.GetFileName(sFile)
'ファイル名(拡張子を除く)
MsgBox objFSO.GetBaseName(sFile)
'拡張子を除く
MsgBox objFSO.GetExtensionName(sFile)

順に、
C:\Users\hogehoge\Desktop
サンプル.txt
サンプル
txt
と表示されます。

「Microsoft Scripting Runtime」を参照設定してください。
参照設定しない場合は、
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
として下さい。


VBA関数(InStrRev)

Dim sFile As String
sFile = "C:\Users\hogehoge\Desktop\サンプル.txt"

'ディレクトリ
MsgBox Left(sFile, InStrRev(sFile, "\") - 1)
'ファイル名
MsgBox Mid(sFile, InStrRev(sFile, "\") + 1)
'ファイル名(拡張子を除く)
MsgBox Mid(sFile, InStrRev(sFile, "\") + 1, InStrRev(sFile, ".") - InStrRev(sFile, "\") - 1)
'拡張子を除く
MsgBox Mid(sFile, InStrRev(sFile, ".") + 1)

順に、
C:\Users\hogehoge\Desktop
サンプル.txt
サンプル
txt
と表示されます。

ディレクトリは最後の\の前まで、最後の\の後ろがファイル名になります。
ファイル名には、.が含まれる場合もあるので、
最後の.以降が拡張子となります。
つまり、ディレクトリの\や、拡張子の.を文字列の後ろから検索するのがコツです。
それには、InStrRev関数を使います。
InStrREv関数は、文字列の中から指定した文字列を最後の文字位置から検索を開始し、最初に見つかった文字位置を返す文字列処理関数です。バリアント型(内部処理形式StringのVariant)で返します。InStrRev関数 InstrRev(stringcheck,stringmatch[,start[,




同じテーマ「マクロVBA技術解説」の記事

複雑な条件(複数除外等)のオートフィルター(AutoFilter)

・"A","C"で絞り込む場合 ・"A","C"以外で絞り込む場合 ・"A","C","E"以外で絞り込む場合 ・作業列を追加
クリップボードを使わないセルのCopy
・セルのコピーの基本 ・「マクロの記録」のコピー ・Destinationを指定したコピー ・クリップボードを使わないセルのCopy ・値と書式のコピー ・書式以外のコピー ・クリップボードを使わないセルのCopyのまとめ
Rangeの使い方:最終行まで選択を例に
Rangeの使い方・書き方について、データ最終行まで選択する場合を例に説明します、Rangeの書き方なので、RangeオブジェクトではなくRangeプロパティの解説という事になります。最近続けざまに、以下のようなコードを見かけました。Range("A2",Range("A2"…
フルパスをディレクトリ、ファイル名、拡張子に分ける
Colorプロパティの設定値一覧(カラー定数、XlRgbColor列挙)
・Excelのカラーについて ・ColorIndex、カラー定数、XlRgbColor列挙、RGB値 ・システム カラーの定数 ・サイト内の色関連関連ページ
VBAを定型文で覚えよう
・サンプルVBA ・サンプルVBAの解説 ・VBAを定型文で覚えるための課題 ・VBAを定型文で覚えることの目標
VBAこれだけは覚えておきたい必須基本例文10
・1.最終行まで処理 ・2.後ろから逆順ループ ・3.コレクション処理 ・4.分岐処理 ・5.セルのコピー ・6.VBA関数とワークシート関数 ・7.オブジェクト変数とWith ・8.ブックを開く・閉じる ・9.ファイル一覧 ・10.テキスト読み書き ・VBA必須基本例文10を覚えた後は
エクセルVBAでのシート指定方法
・シートのインデックス番号で指定 ・シートの名称で指定 ・シートのオブジェクト名で指定 ・ブックの保護 ・VBAでのシート指定方法
文字列結合&でコンパイルエラーになる理由
・&の記述がエラーになる入力とは ・&の前後にはスペースが必要な時がある理由 ・&の他では^(キャレット)でも同様の事がありえます ・最後に
手動計算時の注意点と再計算方法
・計算方法の切り替え:自動⇔手動 ・計算式を入れると必ず計算される ・ブック保存時は再計算される ・セルのコピーでは再計算されない ・いろいろな再計算方法 ・他のセルと同じ数式を入れたい時に最も簡単な方法
VBAの用語について:ステートメントとは
・キーワード ・予約語 ・演算子 ・識別子 ・ステートメント ・VBA用語の最後に


新着記事NEW ・・・新着記事一覧を見る

VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ