Is this right?
Sub CombineWorkbooks()
Dim xlWkbk As String
Dim xlWkshName As String
Dim xlWksh As Object
Dim xlWkshM As Object
Dim FilesToOpen
Dim x As Integer
Dim i As Integer
On Error GoTo ErrHandler
Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
MultiSelect:=True, Title:="Files to Merge")
If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "No Files were selected"
GoTo ExitHandler
End If
x = 1
While x <= UBound(FilesToOpen)
Workbooks.Open Filename:=FilesToOpen(x)
xlWkbk = ActiveWorkbook.Name
xlWkshName = Replace(xlWkbk, ".xls", "")
For Each xlWksh In Workbooks(xlWkbk).Sheets
If WorksheetFunction.CountA(xlWksh.Cells) > 0 Then
xlWksh.Copy After:=ThisWorkbook.Sheets _
(ThisWorkbook.Sheets.Count)
With ActiveSheet
.Name = xlWkshName & " " & .Name
End With
End If
Next xlWksh
Workbooks(xlWkbk).Close False
x = x + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
End Sub
Bookmarks