I could able to find the mistake in the below lines. The correct code should be:
i realised i had made that error, during the night

i am not sure i have all the number of rows correct, you will have to test,
change to
rws = Wb.Sheets(shts(s)).UsedRange.Rows.Count - 2

try
change to
if s = 2 then headsdone = True

#N/As in 6 rows.
is all the rows of data copied, or some omitted?