The Cells reference within the range might be the hangup. I've gotten weird errors when using Range() with two cells in it. With just:
Range(Cells(1, iHeadCol), Cells(1, iLastCol))
It may be looking at ActiveSheet.Cells and if you try combining cells in different worksheets (or with an explicit reference on the range) you get errors. Try explicitly referencing the cells with:
Range(wbReceive.Sheets(sExcept)Cells(1, iHeadCol), wbReceive.Sheets(sExcept)Cells(1, iLastCol))
It looks ugly but you can probably clean it up with some worksheet objects.