質問
ExcelのVBAでフォルダ名の取得
- 投稿日時:2003/04/16 01:13

お世話になります。
タイトルのままなんですが、
VBAでフォルダのフルパスを取得したいのですが出来るでしょうか?
ファイルのフルパスは FN = Application.GetOpenFilename で取得出来たのですが
同じ様に ダイアログから選択する様に出来るでしょうか?
回答 (4件)
- 最新から表示
- 回答順に表示
- ベストアンサーのみ表示
No.4ベストアンサー10pt
- 回答日時:2003/04/22 09:50
>> VBAでフォルダのフルパスを取得したいのですが出来るでしょうか?
> フォルダを選ぶと、そのフォルダの中のファイルを
> 全部表示するようにしたいのです。
うぅ~ん どっちなんでしょうかね。
なんか趣旨が一貫していないような気がしますが・・・
ホルダだけ指定するのであれば、組込みのダイアログを使用するのは、
無理があると思います。
それであればフォルダ名を選択するフォームを作ったら如何でしょうか。
選択するホルダは、ある1個のホルダの中の複数のホルダということで
いいのですか?
下記の例は、フォームにリストボックスとコマンドボタンを配置し、
そのリストボックスに表示されたフォルダの中から選択するように
したものです。
例では、ユーザーフォームの名前を UserForm1、リストボックスの名前を
ListBox1 とします。
"c:\test\"の中のホルダをリストボックスに表示し、選択したホルダの
中の標準ファイルだけをMsgBoxに表示します。
やりたいことがいまいち解りませんので、外れているかも知れませんが、
推測したところでは、こんな感じです。
Public MyPath As String
Sub test2()
Dim MyName As String
MyPath = "c:\test\"
MyName = Dir(MyPath, vbDirectory)
UserForm1.Show (vbModeless)
UserForm1.ListBox1.Clear
Do While MyName <> ""
If MyName <> "." And MyName <> ".." Then
If (GetAttr(MyPath & MyName) And vbDirectory) = _
vbDirectory Then
With UserForm1.ListBox1
.AddItem MyName
.ListIndex = 0
End With
End If
End If
MyName = Dir
Loop
End Sub
Private Sub CommandButton1_Click()
Dim FName As String
Dim Rw As Integer
Dim FNdsp As String
MyPath = MyPath & Me.ListBox1.Value & "\"
FName = Dir(MyPath, vbNormal)
Do While FName <> ""
If FName <> "." And FName <> ".." Then
If (GetAttr(MyPath & FName) And vbNormal) = _
vbNormal Then
Rw = Rw + 1
' Cells(Rw, 1).Value = FName
FNdsp = FNdsp & MyPath & FName & vbCrLf
End If
End If
FName = Dir
Loop
UserForm1.Hide
MsgBox FNdsp
End Sub
この回答へのお礼
回答ありがとうございました。
無事解決することができました。
また、疑問がありましたら
よろしくお願いします。
この回答への補足
すみません、質問がごちゃごちゃしてしまいました。
今作ってるのが、フォルダ名をセルに入れてVBAを実行すると
セルにファイルのリストを表示するものなので
そのフォルダ名を簡単に取得出来ないものかと調べていました。
No.3ベストアンサー20pt
- 回答日時:2003/04/21 18:29
こんな使い方が正しいかどうか分かりませんし、ご希望のものとは少し違うかもしれませんが、参考までに…。
Sub Test2()
Dim FileName As Variant
FileName = Application.GetSaveAsFilename _
(InitialFileName _
:="フォルダを選択してください", _
FileFilter:="(*.---),*", _
Title:="フォルダの選択")
If FileName = False Then Exit Sub
MsgBox Mid(FileName, 1, _
InStrRev(FileName, "\") - 1)
End Sub
この回答へのお礼
回答ありがとうございました。
無事解決することができました。
また、疑問がありましたら
よろしくお願いします。
この回答への補足
なかなか いい感じに出来ました。
ありがとうございます。
No.2
- 回答日時:2003/04/17 17:38
こんなのはどうでしょう、他にもっと良い方法があるのかもしれませんが。
Sub Test()
Dim FileName As Variant
FileName = Application.GetOpenFilename _
("JPEGファイル (*.jpg),*.jpg")
If FileName = False Then Exit Sub
MsgBox Mid(FileName, 1, _
InStrRev(FileName, "\") - 1)
End Sub
この回答への補足
回答ありがとうございます。
このVBAと同じように、ファイルを選択してフォルダ名を取得するようにしてるのですが
これを、直にフォルダを選ぶようにしたいのです。
よろしくお願いします。
- 質問者のみ
- この回答にお礼をつける
No.1
- 回答日時:2003/04/16 10:05
一例ですが、下記のコードは、ファイル選択ダイアログからファイル(複数可)を
選択し、フルパスでファイル名をアクティブシートのA1から下へ書き込みます。
Sub test1()
Dim FName As Variant
Dim I As Integer
FName = Application.GetOpenFilename _
("Excelファイル (*.xls), *.xls", , , , True)
For I = 1 To UBound(FName)
ActiveSheet.Cells(I, 1).Value = FName(I)
Next I
End Sub
こんなもので、どうにか参考になりませんか。
この回答への補足
回答ありがとうございます。
同じ様なのは、作れたのですが、
フォルダを選ぶと、そのフォルダの中のファイルを
全部表示するようにしたいのです。
わかりましたら、よろしくお願いします。
- 質問者のみ
- この回答にお礼をつける
このQ&Aを見た人はこんなQ&Aも見ています
注目の記事
教えて!Firefox
より速く、より安全なウェブブラウザ「Firefox(ファイアーフォックス)」に関する疑問をみんなで解決。全くの初心者から上級者までFirefoxの魅力を十分に味わうために、教えて!gooのユーザーみんながお手伝いします。
このQ&Aを見た人がよく見るQ&A
このカテゴリで人気のQ&Aランキング
- 4エクセルにおいて、シートの保護を...
- 5エクセルで数式の結果が反映されな...
- 6Excel文書が読み取り専用になって解...
- 7iPadでワード、エクセルを使うには...
- 8エクセルで重複しているデータの抽...
- 9excelからexcelへの差し込み印刷
- 10エクセル STDEVとSTDEVPの違い
- 11エクセルで条件に合うものを別シー...
- 12行間を詰めるには・・・
- 13Excelで、エラーの #DIV/0! を表示...
- 14エクセルのセルに入力した文字数
- 15VLOOKUP関数で複数の検索値を設定し...
- 16エクセルで列の全ての項目に文字を...
- 17Excelで入力したデータを他のシート...
- 18マイクロソフト以外で一番のoffice...
- 19フリーの表計算ソフト
- 20エクセル マクロで教えて下さい。





