• ベストアンサー

エクセル 一つ上の階層の別フォルダのファイル名

フォルダ「1」の中にあるエクセルファイル「A」を開いています この状態でフォルダ「2」の中にあるエクセルファイルの全ファイル名を取得したい のでご教示願います フォルダ「2」はフォルダ「1」と同じ階層にあります フォルダ「1」 ------ フォルダ「2」     l                   l       l                   l エクセルファイル「A」     エクセルファイル「*」, エクセルファイル「**」…ファイル数は不確定

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

本質問は処理をプログラムでやる場合でしょう。 ・Dir関数や ・FSOのGetfolder、Files が使われる。 Sub test43() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") Set objfolder = FSO.GetFolder("C:\Documents and Settings\XXXX\My Documents").Files For Each fl In objfolder MsgBox fl.Name Next Set FSO = Nothing End Sub しかしどちらも人間が調べてC:\Documents・・・ に当たるPathを調べて書き込めば済むことではないですか。 初心者らしいが、凝ったことを考えすぎではないか。 「親と同階層のフォルダの別フォルダ」の子にあるかどうかも、全部プログラムで作成管理している場合は別だが、そうでないと、そこにあるかどうか保証の限りではない場合が多いわけだし。実際にあるフォルダやファイルの状態を相手にプログラムを 実行するわけだから。 ーー Sub test43() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") ''C:\Workフォルダ内に保存されているファイルの個数を表示します Set objfolder = FSO.GetFolder("C:\Documents and Settings\XXXX\My Documents").Files MsgBox FSO.GetFolder("C:\Documents and Settings\XXXX\My Documents").ParentFolder End Sub のようにして、上位フォルダー名は判る。(C:\Documents and Settings\XXXX) それ+(兄弟フォルダのフォルダ名)+ファイル名でいとこのファイルが指定できるのでは。 ーー 別件だが 私が連想したものに、シートでも Sub Sample2() MsgBox "1つ左は" & ActiveSheet.Previous.Name MsgBox "1つ右は" & ActiveSheet.Next.Name End Sub は実際では、使える場面が少ない。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

ん? フォルダ名「1」と「2」が共に既知なら,ぐだぐだやらなくても話ははるかに簡単で済んでしまいますね。 sub macro2()  dim myPath as string  mypath = application.substitute(thisworkbook.path, "\1","\2") ’ファイルを取得する  myFile = Dir(myPath & "\*.xls*")  Do Until myFile = ""  i = i + 1  Cells(i, 1) = myFile  myFile = Dir()  Loop End Sub #Dir関数のヘルプの使用例の,そのまんまです。

回答No.2

こんにちは こちらにファイルの一覧を取得するVBAが掲載されてますので参考にしてみては いかがでしょうか?       ↓↓↓ http://officetanaka.net/excel/vba/file/file07.htm パスの指定をフォルダ2で行うのをお忘れなく・・ それでは

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

フォルダ1と2は必ず2個しか無く必ず2個あるとすると。 Sub macro1()  Dim myPath As String  Dim myFile As String  Dim ThisFolder As String  Dim check1 As Boolean  Dim i ’自分フォルダを調べる  myPath = ThisWorkbook.Path  i = InStrRev(myPath, "\")  ThisFolder = Mid(myPath, i + 1, 99)  myPath = Left(myPath, i) ’フォルダを取得する  myFile = Dir(myPath, vbDirectory)  Do Until myFile = ""  If myFile <> "." And myFile <> ".." And myFile <> ThisFolder Then  If (GetAttr(myPath & myFile) And vbDirectory) = vbDirectory Then  myPath = myPath & myFile & "\"  check1 = True  Exit Do  End If  End If  myFile = Dir()  Loop  If Not check1 Then  MsgBox "no folder"  Exit Sub  End If ’ファイルを取得する  i = 1  myFile = Dir(myPath & "*.xls*")  Do Until myFile = ""  Cells(i, 1) = myFile  i = i + 1  myFile = Dir()  Loop End Sub #ファイルやフォルダを調べる方法は幾つかありますが,ご相談で明記されていないご利用のエクセルのバージョンによって,使える方法と使えない方法があるので注意してください。  今後ご相談投稿時には,ご利用のソフトの名称はモチロンのことバージョンもしっかり記載してください。 #それとは別に,上記のマクロはExcel2000以降で利用できます。

sadacchi12
質問者

お礼

’自分フォルダを調べる  myPath = ThisWorkbook.Path  i = InStrRev(myPath, "\")  ThisFolder = Mid(myPath, i + 1, 99)  myPath = Left(myPath, i) これが決め手でした myPathがわかればこの後ろにフォルダ「2」を入れて 中にあるファイルをDo While で検索できますね ありがとうございました

関連するQ&A