- ベストアンサー
【Excel VBA】ファイルのフルパスからフォルダ名のみ取り出したい
Dim testfile As String testfile = C:\test\aaa.xls とします。 この時、testfileのディレクトリ名だけを取り出したいのですが、 どのようにすればよろしいでしょうか? 結果としては、 testdir = C:\test\ のような感じです。 一発でディレクトリ名を返してくれる関数はありますか? それとも、フルパスの右側から1文字ずつ検索して"\"を~しか方法がないのでしょうか? よろしくお願いします。
- みんなの回答 (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" ですね。
その他の回答 (1)
- n-jun
- ベストアンサー率33% (959/2873)
testdir = Replace(testfile , "aaa.xls" , "") と言うこと?
お礼
ご回答ありがとうございました。 #2さんの回答で解決できました。 ですが、早々にご回答いただいたことには大変感謝しております。 ※私の言葉足らずがありまして、申し訳ありませんでした
お礼
ご回答ありがとうございます。 >testdir = Left(testfile, InStrRev(testfile, "\")) こちらで解決しました。 朝早くからご回答いただき、本当に感謝しています。 繰り返しになりますが、ありがとうございました。
補足
#1様、#2様 早速のご回答、ありがとうございます。 また、言葉足らずでスミマセンでした。 まず、testfile = "C:\test\aaa.xls"です。 そして、"C:\test\aaa.xls"はダイアログボックスから選択したフルパスなのです。 この文字列"C:\test\aaa.xls"からファイル名"aaa.xls"を除いた"C:\test\"を取得したいのです。 ※もちろん、ダイアログボックスからの選択ですから状況によりパスは変動します よろしくお願いします。