• ベストアンサー

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

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

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

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

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

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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

  • Excel 埋め込みオブジェクトのファイル名取得

    Excelファイルに挿入>オブジェクト>ファイルから ・・・ で選択し、埋め込んだオブジェクトのファイル名をVBAで 取得する事はできますか? 実際には上記のように手動ではなく、 Application.Dialogs(xlDialogInsertObject).Show , " ", , True でダイアログを表示し、ファイルを選択させています。 埋め込んだファイルがフォルダ階層が深かったりすると、 ファイル名まで表示されないので、ファイル名を取得して、 別のセルに入力するまでをVBAで処理をしたいと考えています。 既に埋め込まれているオブジェクトの名前を取得する、もしくは ダイアログで選択されたファイルの名前を取得する、ということが できるのであれば教えていただけますでしょうか?

  • オブジェクト変数の取得

    コモンダイアログを使用して、選択したExcelファイルをAPIの ShellExecute関数で起動を行っているんですが、エクセルファイルを 開いた後に、エクセルのセルのデータを取得したいのです。 オブジェクト変数でエクセルを取得したいのですが、なかなか上手くいきません。 今までは普通に以下のような処理でオブジェクト変数を取得していたのですが set オブジェクト変数 = GetObject("パス") または set オブジェクト変数 = CreateObject("パス") これだど、またエクセルを起動させてしまうので、、 既に起動してしまっているものを取得するのはどうすれば よいのでしょうか? ご教示ねがえませんでしょうか? よろしくお願いいたします。

  • パワーポイント filedialogでフォルダ名

    パワーポイントでVBAを使用しており、フォルダ名を取得しようとしてます。 エクセルのGetopenfileが使用出来ず、filedialogまたはAPIを使用するらしく、素人目で作り易そうなfiledialogを選びました。 型宣言で dim fname as filedialog と宣言しておき、 set fname = application.filedialog(msofiledialogfolderpicker) と書けば、ここでウインドウが開きフォルダ指定が出来るのでしょうか? また、型宣言が見たことのない型ですが、フォルダ名の後にファイル名を付けて、ファイルを取り込むことは出来るでしょうか?どうやればいいのでしょうか?

  • ListViewにSETしたファイル名からファイルパス取得方法

    今、ファイル名変換プログラムを作成しています。 そこで、ドラッグ&ドロップまたはフォルダ参照ダイアログから、 ファイルステータスをリストビューにセットしました。 (ファイル名)EX) XXXX.txt #その時、ファイルパスは取得できています。 その後、実行する時にリストビューから ファイル名は、GetItemTextで取得できました。 しかし、ファイルパスは取得できません。 ファイル名だけから、ファイルパスを取得するには、 どのようにしたら良いのでしょうか?? ファイル名の変更は、CFileDialog::Renameで考えているので、。。 それとも、他に良い方法はございますでしょうか? また、構造体かなんか定義して、 リストビューへSETする時に構造体にパスを保存し、 実行時に参照して処理すべきでしょうか? ただ、リストビューで選択し「DEL」ボタンで、 削除できるようしてあるので、 この方法は、効率が悪いように思えて・・・ 環境は、Win2000、VC++6.0、MFCで作成しています。 以上、ご教授ください!

  • VBAでファイル名の取得方法

    FileDialogを使用してユーザーにファイル名を指定してもらい、結果からフルパスを取得する事はできたのですが、パスではなくファイル名を取得するにはどのようにすれば良いのでしょうか? Dim lngCount As Long ' ファイル ダイアログを開きます。 With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show '選択された各ファイルのパスを表示します。 For lngCount = 1 To .SelectedItems.Count lblPath_1.Caption = .SelectedItems(lngCount) Next lngCount End With

  • エクスプローラで選択したファイル名の取得

    【OS】XP-PRO 【言語】Delphi-5 エクスプローラでファイル(フォルダ)を複数選択し、右クリックの『送る』からプログラムを起動。 選択されたファイルパス名を取得したいのですが、方法がわかりません。 よろしくお願いします。

  • パワーポイント filedialog

    filedialogでファイル名取得しようとしてます。   With Application.FileDialog(msoFileDialogFilePicker)     .Show for i=1 to selecteditems.Count      p(i) = .SelectedItems(i) next i     Debug.Print p   End With 質問1 Showにて選択したファイル名がselecteditemsコレクションに入る筈ですが、順番はどうなるのでしょうか?選択順?それともファイル名順? 質問2 あわよくば、の質問です。 selecteditemsコレクションに入ったファイル名の文字列を取り出すだけのために、わざわざfor nextを使ってます。もうちょっとウマイ方法はないでしょうか。せっかくコレクションに入ったのなら、そのまま使う方法とか。この後のファイル名の用途は、図を挿入します。

  • 複数のファイル名を取得したいのですが…

    ディレクトリ内のファイル名を1件づつ取得し、表示したいのですが、readdirを使用し、ファイル名を取得すると、一つの変数に存在するファイル名をまとめて表示してしまいます。 ファイルの件数分、変数へファイル名を入れることは可能でしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • FileMaker8.5:オブジェクトフィールドに入れたファイルの情報取得どこまで

    こんばんは。 文書管理の助けにしようとFileMakerを弄ることになったのですが、 テンプレートに付いてきた文書管理のテンプレートを弄くっていて首をひねったので質問させてください。 オブジェクトフィールドにファイルを添付、その際にそこから他のフィールドに *ファイル作成・更新年月日 *ファイルサイズ *ファイルパス *ファイル名 ・・・以上を同時に表示させてみようとしたのですが、美味くいかないようです。 GetAsText関数で、ファイルそのものを添付した場合はファイル名、リンクだけ張る場合にファイルパスが出るのは確認しました。 Length関数でファイルそのものを添付するとファイルサイズが出るのも確認したのですが、ファイルの作成、更新日は拾えるのかどうか? 現状ファイル名とファイルパスを一発で分けて出すことも出来るのかどうか? 出来れば添付一発で一気に情報が埋まるようにしたいのですが、何かヒントをおもちであれば宜しくお願いいたします。

  • オブジェクト名からオブジェクトを取得する方法?

    こんばんは,よろしくお願いします。 多分とても簡単なことなんだと思います。でも分かりません。教えてください。お願いします。 エクセルVBAで, TextBox1というオブジェクト名(文字列型のデータ)からオブジェクトを取得する方法を教えてください。よろしくお願いします。

専門家に質問してみよう