Just a comment about speed of processing your largest spreadsheet: I
notice that you select sheet "Tally", do something, select sheet
"Email", etc. This does take a lot of time. Have you thought of using
named ranges instead? Since you are working with different cells in the
sheets, you can refer to a named range with a relative offset, and then
do what you do without ever opening the sheet.
Works like a charm for what I do. I presume you have
application.screenupdating = false and later True in your code as well.
If you do not, this will also speed up things dramatically.