- ベストアンサー
FileDialog オブジェクトでファイル名のみを取得
FileDialog オブジェクトで返すオブジェクトを参照すると どうしてもファイルパスを取得する変数しか取得できません。 FileDialog オブジェクトで選択したファイルのファイル名のみを取得するにはどうしたらよいでしょうか。 ExcelVBAです。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Dir関数を使ってはいかがでしょう? MsgBox fname & vbCrLf & Dir(fname)
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
Function FolderPath2() As String '2002以降で動作します With Application.FileDialog(msoFileDialogFilePicker) If .Show = -1 Then 'アクションボタンがクリックされた FolderPath2 = .SelectedItems(1) Else 'キャンセルボタンがクリックされた FolderPath2 = "" End If End With End Function Sub test01() x = FolderPath2() MsgBox x p = InStrRev(x, "\") MsgBox Mid(x, p + 1, Len(x) - p) End Sub functionの部分は http://www.k1simplify.com/vba/tipsleaf/leaf260.html などWEB照会すれば出てくる。 MsgBox Mid(x, p + 1, Len(x) - p) の右の方で、選択されたファイル名が取れた。 エクセル2002VBAでテスト済み。
- marbin
- ベストアンサー率27% (636/2290)
#1です。 >MsgBox fname & vbCrLf & Dir(fname) あふぉな回答でした。 自分のPC内で「FileDialog 」で検索して見つかった コードをnikogooさんのコードと勘違いして、その コードに付加するものだけをアップしてました。 ちなみに、nikogooさんのコードと勘違いしたものは Dim fname As String fname = Application.GetOpenFilename("エクセルファイル, *.xls") です。 失礼しました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >ファイルパスを取得する変数しか取得できません。 FileDialog で、どうやって使っているのか書かれていませんので、こちらが考えなくてはならないわけですが、msoFileDialogFolderPicker を使っているからだと思います。 >ファイルのファイル名のみを取得する というのは、たとえば、こんな風にすればよいのでは? Sub Test1() Dim fn As Variant Dim i As Integer With Application.FileDialog(msoFileDialogOpen) .FilterIndex = 2 'EXCEL i = .Show If i = -1 Then For Each fn In .SelectedItems MsgBox Mid$(fn, InStrRev(fn, "\") + 1) Next fn End If End With End Sub