フルパスをファイル名とパスに分ける方法を紹介します。InStrRev関数またはFileSystemObjectどちらかで簡単に分けることができます。
c:\parent\child\sample.txt
↓
c:\parent\child
sample.txt
FileSystemObjectでは、ファイル名とパスだけでなく、拡張子やファイルサイズ、作成日時、更新日時、アクセス日時も取得することができます。サンプルプログラムにて確認してください。
InStrRev関数を使って解決する
EXCEL数式のみで解決しようとするとFINDやSUBSTITUTEなどを駆使して分ける方法がありますが、VBAではInStrRev関数で簡単に解決することができます。InStrRev関数は、文字列の後ろから指定の文字列を探す関数となります。
参考として、VBAを使わずにファイルとパスに分ける方法を紹介します。
FileSystemObjectを使って解決する
FileSystemObjectを利用するためには参照設定が必要になります。以下で設定方法を説明しています。
FileSystemObjectには、ファイル名やパス名を取得する関数が準備されています。関数をコールするだけで簡単に取得することができます。サンプルプログラムにて確認してください。
サンプルプログラムを確認する(コピペOK)
Option Explicit
Sub sample()
Dim FullPath As String: FullPath = "c:\parent\child\sample.txt"
' InStrRevを使う方法
Dim pos As Integer: pos = InStrRev(FullPath, "\")
Debug.Print Left(FullPath, pos - 1) ' c:\parent\child
Debug.Print Mid(FullPath, pos + 1) ' sample.txt
' FileSystemObjectを使う方法
Dim fso As FileSystemObject: Set fso = New FileSystemObject
Debug.Print fso.GetParentFolderName(FullPath) ' c:\parent\child
Debug.Print fso.GetFileName(FullPath) ' sample.txt
Debug.Print fso.GetBaseName(FullPath) ' sample
Debug.Print fso.GetExtensionName(FullPath) ' txt
Debug.Print fso.GetFile(FullPath).Size ' 43254
Debug.Print fso.GetFile(FullPath).DateCreated ' 2022/04/10 3:22:42
Debug.Print fso.GetFile(FullPath).DateLastModified ' 2011/11/23 4:25:10
Debug.Print fso.GetFile(FullPath).DateLastAccessed ' 2022/06/11 11:45:25
End Sub