アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォルダ「1」の中にあるエクセルファイル「A」を開いています

この状態でフォルダ「2」の中にあるエクセルファイルの全ファイル名を取得したい
のでご教示願います
フォルダ「2」はフォルダ「1」と同じ階層にあります

フォルダ「1」 ------ フォルダ「2」 

   l                   l   
   l                   l

エクセルファイル「A」     エクセルファイル「*」, エクセルファイル「**」…ファイル数は不確定

A 回答 (4件)

本質問は処理をプログラムでやる場合でしょう。


・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
は実際では、使える場面が少ない。
    • good
    • 0

ん? フォルダ名「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関数のヘルプの使用例の,そのまんまです。
    • good
    • 0

こんにちは



こちらにファイルの一覧を取得するVBAが掲載されてますので参考にしてみては
いかがでしょうか?
      ↓↓↓
http://officetanaka.net/excel/vba/file/file07.htm

パスの指定をフォルダ2で行うのをお忘れなく・・

それでは
    • good
    • 0

フォルダ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以降で利用できます。
    • good
    • 0
この回答へのお礼

’自分フォルダを調べる
 myPath = ThisWorkbook.Path
 i = InStrRev(myPath, "\")
 ThisFolder = Mid(myPath, i + 1, 99)
 myPath = Left(myPath, i)

これが決め手でした
myPathがわかればこの後ろにフォルダ「2」を入れて
中にあるファイルをDo While で検索できますね

ありがとうございました

お礼日時:2011/07/10 16:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!