It has to be open. There isn't anyway to run a macro in a spreadsheet that isn't open.

Even if you put the macro in a personal.XLSB an instance of Excel would still have to be open.