#106 | ファイルのフルパスを構成要素に分解するには? | VBA | ||||||||||||||||
FileSystemObjectオブジェクトには、ファイルのフルパスから各構成要素を取り出すためのメソッドがいくつかあります。例えば、"c:\My Documents\db1.mdb"を引数に指定した場合、各メソッドは次のような要素を返します。
この中で、GetParentFolderNameメソッドは「ドライブ名+フォルダ名」を返します。またGetFileNameメソッドは「ファイル名+拡張子」を返します。次のサンプルプロシージャでは、これらの部分をさらに文字列関数を使って分解し、フォルダ名やファイル名の部分だけを取り出しています。 サンプルプロシージャ: Public Sub ParseFullPath(strFullPath As String, strDrive As String, _
strDir As String, _ strFName As String, strExt As String) Dim Fso As Object 'FileSystemObjectオブジェクトを生成します Set Fso = CreateObject("Scripting.FileSystemObject") With Fso 'フルパスからドライブ名を取得します strDrive = .GetDriveName(strFullPath) 'フルパスからフォルダ名部分を取り出します strDir = Mid$(.GetParentFolderName(strFullPath), Len(strDrive) + 1) If Right$(strDir, 1) <> "\" Then strDir = strDir & "\" 'フルパスから拡張子を取得します strExt = .GetExtensionName(strFullPath) If Len(strExt) > 0 Then strExt = "." & strExt 'フルパスからファイル名+拡張子を取得します strFName = .GetFileName(strFullPath) 'ファイル名+拡張子からファイル名だけを取り出します strFName = Left$(strFName, Len(strFName) - Len(strExt)) End With End Sub 使用例: Dim strDrive As String
Dim strDir As String Dim strFName As String Dim strExt As String 'フルパス名を分解するプロシージャを呼び出します ParseFullPath "c:\My Documents\db1.mdb", strDrive, strDir, strFName, strExt '結果をイミディエイトウィンドウに出力します Debug.Print "ドライブ名: " & strDrive Debug.Print "フォルダ名: " & strDir Debug.Print "ファイル名: " & strFName Debug.Print "拡張子 : " & strExt ※これは実際にそのファイルが存在しなくても正しく動作します。 |
||||||||||||||||||
|
Copyright © T'sWare All rights reserved |