• ベストアンサー

FileDialog オブジェクトでファイル名のみを取得

FileDialog オブジェクトで返すオブジェクトを参照すると どうしてもファイルパスを取得する変数しか取得できません。 FileDialog オブジェクトで選択したファイルのファイル名のみを取得するにはどうしたらよいでしょうか。 ExcelVBAです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

Dir関数を使ってはいかがでしょう? MsgBox fname & vbCrLf & Dir(fname)

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

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)
回答No.3

#1です。 >MsgBox fname & vbCrLf & Dir(fname) あふぉな回答でした。 自分のPC内で「FileDialog 」で検索して見つかった コードをnikogooさんのコードと勘違いして、その コードに付加するものだけをアップしてました。 ちなみに、nikogooさんのコードと勘違いしたものは Dim fname As String fname = Application.GetOpenFilename("エクセルファイル, *.xls") です。 失礼しました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >ファイルパスを取得する変数しか取得できません。 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

関連するQ&A

専門家に質問してみよう