Hi all,
This is my first time on the forums, even though I've been using code off here for the past few weeks. I'm working with Excel 2007 and VBA 6.5 and only have about 2 weeks experience with VBA under my belt so bear with me here. I've done C++ and Matlab before, but macros are still new.
I've been looking for a way to run a macro sub to loop through all files in a chosen folder and all its subfolders. I've found ways to list off files in folders and subfolders, but I can't seem to make them work for my code. I'm basically looking for the simplest code possible that will do this.
My code below opens a data file and template, transfers the data into the template, then overwrites the data file with the nice data template form. Right now it will only loop through all files in a given folder. Thanks in advance for any help.
Code:Sub Step_Response_FIXED() Application.ScreenUpdating = False Application.EnableEvents = False Dim strDir As String, strFileName As String 'Select a folder dialog popup sets active directory With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Please Select a Folder" .ButtonName = "Select Folder" .InitialFileName = "C:\Documents and Settings\ktech\Desktop\" .AllowMultiSelect = False .Show If .SelectedItems.count > 0 Then strDir = .SelectedItems(1) & "\" Else MsgBox "No folder was chosen." & vbLf & vbLf & "Please try again.", vbExclamation, "User Cancelled." Exit Sub End If End With strFileName = Dir(strDir & "*GFE DV 3.4.9 Step Response & Overshoot ID_*.xls") Do While strFileName <> "" 'Define Workbooks Dim wbk1 As Workbook Dim wbk2 As Workbook Set wbk1 = Workbooks.Open("C:\Documents and Settings\ktech\Desktop\NH Step Response Overshoot Template.xls") Set wbk2 = Workbooks.Open(strDir & strFileName) 'Transfer data between files wbk1.Sheets("DATA").Range("A1:AG29").Value = _ wbk2.Sheets("DATA").Range("A1:AG29").Value wbk1.Sheets("SUMARIZED DATA").Range("A1:AJ2").Value = _ wbk2.Sheets("SUMARIZED DATA").Range("A1:AJ2").Value wbk1.Sheets("CSV DATA").Range("A1:H15000").Value = _ wbk2.Sheets("CSV DATA").Range("A1:H15000").Value wbk1.Sheets("TABLES").Range("A1:C17").Value = _ wbk2.Sheets("TABLES").Range("A1:C17").Value wbk1.Sheets("CHART NAMES").Range("A1:P2").Value = _ wbk2.Sheets("CHART NAMES").Range("A1:P2").Value 'Closes old data file Windows(strFileName).Activate ActiveWorkbook.Close False 'Activates template with newly copied data Windows("NH Step Response Overshoot Template.xls").Activate Sheets("Pass-Fail Summary").Select 'Pauses for user input 'MsgBox "Press Enter to continue" 'Change directory and save ChDir strDir Application.DisplayAlerts = False ActiveWorkbook.SaveAs filename:=strFileName, FileFormat:=xlNormal 'Close active windows Windows(strFileName).Activate ActiveWorkbook.Close False strFileName = Dir Loop Application.ScreenUpdating = True Application.EnableEvents = True MsgBox "YOU ARE FINISHED!!!!" End Sub


Reply With Quote



