• ベストアンサー

【Excel VBA】ファイルのフルパスからフォルダ名のみ取り出したい

Dim testfile As String testfile = C:\test\aaa.xls とします。 この時、testfileのディレクトリ名だけを取り出したいのですが、 どのようにすればよろしいでしょうか? 結果としては、 testdir = C:\test\ のような感じです。 一発でディレクトリ名を返してくれる関数はありますか? それとも、フルパスの右側から1文字ずつ検索して"\"を~しか方法がないのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

>testfileのディレクトリ名だけを取り出したい  どのようにして「testfile」を設定しているかによって、ヤリカタも変わってくるかと存じます。 >フルパスの右側から1文字ずつ検索して"\"を testdir = Left(testfile, InStrRev(testfile, "\")) >一発でディレクトリ名を返してくれる関数  もともとの「testfile」という「String」が Set testbook = ThisWorkbook testfile = testbook.FullName というようなことで設定されているのでしたら、 testdir = testbook.Path & "\"  また、実在のファイルでしたら、 testdir = Replace(testfile, Dir(testfile), "")  ちなみに testfile = C:\test\aaa.xls ではなくて、 testfile = "C:\test\aaa.xls" ですね。

motsu2006
質問者

お礼

ご回答ありがとうございます。 >testdir = Left(testfile, InStrRev(testfile, "\")) こちらで解決しました。 朝早くからご回答いただき、本当に感謝しています。 繰り返しになりますが、ありがとうございました。

motsu2006
質問者

補足

#1様、#2様 早速のご回答、ありがとうございます。 また、言葉足らずでスミマセンでした。 まず、testfile = "C:\test\aaa.xls"です。 そして、"C:\test\aaa.xls"はダイアログボックスから選択したフルパスなのです。 この文字列"C:\test\aaa.xls"からファイル名"aaa.xls"を除いた"C:\test\"を取得したいのです。 ※もちろん、ダイアログボックスからの選択ですから状況によりパスは変動します よろしくお願いします。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

testdir = Replace(testfile , "aaa.xls" , "") と言うこと?

motsu2006
質問者

お礼

ご回答ありがとうございました。 #2さんの回答で解決できました。 ですが、早々にご回答いただいたことには大変感謝しております。 ※私の言葉足らずがありまして、申し訳ありませんでした

関連するQ&A