総ありがとう数 累計4,330万(2014年12月20日現在)

毎月4,000万人が利用!Q&Aでみんなで助け合い!

-PR-
Mr-J

お世話になります。
タイトルのままなんですが、
VBAでフォルダのフルパスを取得したいのですが出来るでしょうか?
ファイルのフルパスは FN = Application.GetOpenFilename で取得出来たのですが
同じ様に ダイアログから選択する様に出来るでしょうか?
  • 回答数4
  • 気になる数0

Aみんなの回答(全4件)

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

  • 2003-04-21 18:29:07
  • 回答No.3
こんな使い方が正しいかどうか分かりませんし、ご希望のものとは少し違うかもしれませんが、参考までに…。

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
補足コメント
なかなか いい感じに出来ました。
ありがとうございます。
投稿日時 - 2003-04-23 13:33:50
お礼コメント
回答ありがとうございました。
無事解決することができました。
また、疑問がありましたら
よろしくお願いします。 
投稿日時 - 2003-04-23 13:56:14
  • 同意数0(0-0)
  • ありがとう数0

その他の回答 (全3件)

  • 2003-04-17 17:38:18
  • 回答No.2
こんなのはどうでしょう、他にもっと良い方法があるのかもしれませんが。

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と同じように、ファイルを選択してフォルダ名を取得するようにしてるのですが
これを、直にフォルダを選ぶようにしたいのです。
よろしくお願いします。
投稿日時 - 2003-04-21 13:16:30
  • 同意数0(0-0)
  • ありがとう数0
  • 2003-04-16 10:05:07
  • 回答No.1
一例ですが、下記のコードは、ファイル選択ダイアログからファイル(複数可)を
選択し、フルパスでファイル名をアクティブシートの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

こんなもので、どうにか参考になりませんか。
補足コメント
回答ありがとうございます。
同じ様なのは、作れたのですが、
フォルダを選ぶと、そのフォルダの中のファイルを
全部表示するようにしたいのです。
わかりましたら、よろしくお願いします。
投稿日時 - 2003-04-21 13:09:15
  • 同意数0(0-0)
  • ありがとう数0
  • 2003-04-22 09:50:26
  • 回答No.4
>> 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を実行すると
セルにファイルのリストを表示するものなので
そのフォルダ名を簡単に取得出来ないものかと調べていました。
投稿日時 - 2003-04-23 13:41:35
お礼コメント
回答ありがとうございました。
無事解決することができました。
また、疑問がありましたら
よろしくお願いします。
投稿日時 - 2003-04-23 13:56:31
  • 同意数0(0-0)
  • ありがとう数0
  • 回答数4
  • 気になる数0
  • ありがとう数0
  • ありがとう
  • なるほど、役に立ったなど
    感じた思いを「ありがとう」で
    伝えてください

関連するQ&A

その他の関連するQ&Aをキーワードで探す

別のキーワードで再検索する

あなたの悩みをみんなに解決してもらいましょう

  • 質問する
  • 知りたいこと、悩んでいることを
    投稿してみましょう
-PR-
-PR-
-PR-

特集


年賀状のマナーや作り方を学べるQ&A特集!

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ