I am getting an error when running the script
Do While (Not (Workbooks(bookmonth).Worksheets("by associate").Cells(4, i) = "dsl") Or Not (Workbooks(bookmonth).Worksheets("by associate").Cells(4, i) = "hsi"))
I am uncertain why this is coming up. i is currently set to 1, so it should be starting to search in cell a1.

subscript out of range
mido1971
Any value contained in the cell A4 would be compared to the two string values and would either proceed into the loop or pass over it.
What value do you have in the cell when the test raises the error
W.Yuan
MA2005
etones
pgems
If i is currently 1 then are the other indexes correct
What's in the variable bookmonth
Is the sheetname really "by associate". Perhaps there is a extra space somewhere.