Macro doesn't loop through sheets of books in specific folder

D

Diddy

Hi everyone,

I'm trying to select a folder then on each worksheet in each book I would
like to clear the contents of hidden rows 1-4 and then run David McRitchie's
Trimall routine on column H.

Sub PrepClear_Trimall()
Dim lCount As Long
Dim wbResults As Workbook
Dim wbCodeBook As Workbook

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

On Error Resume Next

Set wbCodeBook = ThisWorkbook

With Application.FileSearch
.NewSearch
strFolder = InputBox("Please enter folder", "Path")
.LookIn = strFolder
.FileType = msoFileTypeExcelWorkbooks
.Filename = "*.xls"

If .Execute > 0 Then 'Workbooks in folder
For lCount = 1 To .FoundFiles.Count 'Loop through all.
'Open Workbook x and Set a Workbook variable to it
Set wbResults = Workbooks.Open(.FoundFiles(lCount))

Dim Shts As Worksheet
'Carries out action for ALL worksheets in active workbook
For Each Shts In ActiveWorkbook.Worksheets
Shts.Rows("1:4").Select
Range("B1").Activate
Selection.ClearContents
Columns("H:H").Select
Range("H5").Activate
Call Trimall
Next
wbResults.Close SaveChanges:=True
Next lCount
End If
End With
On Error GoTo 0
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub

I've pasted in some recorded macro bits and it works after a fashion but
only carries out the actions on the active sheet of each workbook it goes
into.

Where am I going wrong?

Thank you
 
G

Gary''s Student

After:

For Each Shts In ActiveWorkbook.Worksheets
insert:
Shts.Activate


This will help insure the various ranges are associated with Shts
 
D

Dave Peterson

Untested, but it did compile:

Option Explicit
Sub PrepClear_Trimall()
Dim lCount As Long
Dim wbResults As Workbook
Dim wbCodeBook As Workbook
Dim Shts As Worksheet
Dim strFolder As String

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

Set wbCodeBook = ThisWorkbook

With Application.FileSearch
.NewSearch
strFolder = InputBox("Please enter folder", "Path")
.LookIn = strFolder
.FileType = msoFileTypeExcelWorkbooks
.Filename = "*.xls"
If .Execute > 0 Then 'Workbooks in folder
For lCount = 1 To .FoundFiles.Count 'Loop through all.
'Open Workbook x and Set a Workbook variable to it
Set wbResults = Workbooks.Open(.FoundFiles(lCount))
'Carries out action for ALL worksheets in active workbook
For Each Shts In wbResults.Worksheets
Shts.Select
Shts.Rows("1:4").ClearContents
Shts.Columns("H:H").Select
Call Trimall
Next Shts
wbResults.Close SaveChanges:=True
Next lCount
End If
End With

Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True

End Sub
 
D

Diddy

Thank you Gary's Student :)

Is there a difference between Activate and Select in this case?

Cheers
Diddy
 
R

Rick Rothstein

From the Remarks section of the help files for the Select Method (for a
range)...

"To select a cell or a range of cells, use the Select method.
To make a single cell the active cell, use the Activate method."
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top