| 
    
     |  | サブフォルダ内も対象というところを読み飛ばしてました。 その参照ページは参考になりませんね、失礼しました。
 
 というよりも、あなた自身が最近同じ質問をされていたようですね。
 ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=74572;id=excel
 
 データを取ってくるんじゃなくて、
 特定シートの特定セルを書き換えて保存する点が違うだけのようですから、
 ご自分でも対応出来そうに思います。
 
 上記のものとは少しちがって、時間は少しかかるかもしれませんが、
 以下のような書き方もあると思います。
 
 フォルダの中のファイルを処理して、
 次に、そのサブフォルダを対象に同じ処理を実行させます。
 こういうのを再帰処理といいます。
 
 なお、Excelファイルに対する処理は、
 taskプロシージャとして外に出していますから、
 その部分だけ変更すれば良いはずです。
 (対象となるフォルダ名は変更してください。)
 
 ----------------
 '' 「Microsoft Scripting Runtime」の参照設定が必要
 
 Dim fso As FileSystemObject
 Sub test()
 Dim myFolderName As String
 
 Application.ScreenUpdating = False
 
 '対象となるフォルダ
 myFolderName = "D:\test"  '' ここは修正
 
 Set fso = New FileSystemObject
 Call walk_folder(fso.GetFolder(myFolderName))
 Set fso = Nothing
 
 Application.ScreenUpdating = True
 MsgBox "処理終了"
 End Sub
 
 Function walk_folder(ByVal objPATH As Folder)
 Dim myPath2 As Folder
 Dim myFile As File
 
 For Each myFile In objPATH.Files
 If fso.GetExtensionName(myFile.Name) = "xls" Then
 Call task(myFile.Path)
 End If
 Next
 
 For Each myPath2 In objPATH.SubFolders
 Call walk_folder(myPath2)
 Next
 
 Set objPATH = Nothing
 End Function
 
 Function task(fname As String)
 Dim wb As Workbook
 
 Set wb = Workbooks.Open(fname)
 wb.Sheets(1).Range("A1").Value = 1
 wb.Save
 wb.Close False
 End Function
 
 |  |