Its possible that your problem is around the code in red below, because you are working with thisworkbook which is the workbook you just opened
[VBA]
Sub teset()
Dim myDir As String, fn As String, a(), i As Integer, ws As Worksheet, LastR As Range
myDir = "C:\test\" '<- change to suite
fn = Dir(myDir & "book1*.xls")
Do While fn <> ""

With Workbooks.Open(myDir & fn)
.Sheets("7.07").Copy

'With Workbooks.Open(myDir & fn)
' .Sheets(4.07).Copy after:=ThisWorkbook.Sheets(1)
With ThisWorkbook.Sheets(1)
Set LastR = .Range("b5")
If Not IsEmpty(LastR) Then _
Set LastR = .Range("a" & Rows.Count).End(xlUp).Offset(1)
End With
With .Sheets(2).UsedRange
LastR.Resize(.Rows.Count, .Columns.Count).Value = .Value
End With
.Close False
End With
fn = Dir()
Loop
'With ThisWorkbook
' ReDim a(1 To .Sheets.Count)
' For Each ws In Sheets
' i = i + 1: a(i) = ws.Name
' Next
' SortA a, 2, UBound(a)
'For Each e In a
' .Sheets(2).Move after:=.Sheets(.Sheets.Count)
' Next
' End With
End Sub
[/VBA]Perhaps declaring thisworkbook (your original) will work
[VBA]
Sub teset()
Dim myDir As String, fn As String, a(), i As Integer, ws As Worksheet, LastR As Range
Dim MyWorkBook As Workbook
Set MyWorkBook = ThisWorkbook

myDir = "C:\test\" '<- change to suite
fn = Dir(myDir & "book1*.xls")
Do While fn <> ""

With Workbooks.Open(myDir & fn)
.Sheets("7.07").Copy

'With Workbooks.Open(myDir & fn)
' .Sheets(4.07).Copy after:=ThisWorkbook.Sheets(1)
With MyWorkbook.Sheets(1)
Set LastR = .Range("b5")
If Not IsEmpty(LastR) Then _
Set LastR = .Range("a" & Rows.Count).End(xlUp).Offset(1)
End With
With .Sheets(2).UsedRange
LastR.Resize(.Rows.Count, .Columns.Count).Value = .Value
End With
.Close False
End With
fn = Dir()
Loop
'With ThisWorkbook
' ReDim a(1 To .Sheets.Count)
' For Each ws In Sheets
' i = i + 1: a(i) = ws.Name
' Next
' SortA a, 2, UBound(a)
'For Each e In a
' .Sheets(2).Move after:=.Sheets(.Sheets.Count)
' Next
' End With
End Sub
[/VBA]Just a thought!