下記コードで、ファイルパスが取得出来るのですが、これを
「ファイル名」と 「ファイルが入っているフォルダのパス」に分けたいです。
例)
C:\Documents and Settings\hoge\デスクトップ\sample.csv
↓
path = "C:\Documents and Settings\hoge\デスクトップ"
filename = "sample.csv"
のような結果になるようにしたいです。
コードを教えてください。
-------------------------------------------------
Public Function GetFileName() As String
Dim intRet As Integer
With Application.FileDialog(msoFileDialogOpen)
.Title = "ファイルを開くダイアログの例"
.Filters.Clear
.Filters.Add "CSV ファイル", "*.csv"
.Filters.Add "Microsoft Access データベース", "*.mdb"
.Filters.Add "Microsoft Access プロジェクト", "*.adp"
.Filters.Add "MDE ファイル", "*.mde"
.Filters.Add "すべてのファイル", "*.*"
.FilterIndex = 1
.AllowMultiSelect = False
.InitialFileName = CurrentProject.Path
intRet = .Show
If intRet <> 0 Then
GetFileName = Trim(.SelectedItems.Item(1))
Else
GetFileName = ""
End If
End With
End Function
GetFileName = Trim(.SelectedItems.Item(1)) p = InStrRev(GetFileName, "\") path = Left(GetFileName, p) filename = Mid( GetFileName, p + 1)
FileSystemObjectオブジェクトを使います。
Option Explicit Dim objFS Dim filePathName As String Dim filename As String Dim path As String filePathName = GetFileName() Set objFS = CreateObject("Scripting.FileSystemObject") filename = objFS.GetFileName(filePathName) path = objFS.GetParentFolderName(filePathName) Set objFS = Nothing
ありがとうございました。参考にさせていただきます。
ファイル名取得
filename =Dir(フルパス)
フォルダ名取得
path = Left(フルパス, Len(フルパス) - Len(Dir(フルパス)))
これでどうでしょうか?
ありがとうございました。参考にさせていただきます。
ありがとうございました。参考にさせていただきます。