А сам макрос длинный? Возможно есть смысл перенести его полностью на delphi. А вообще у excel, есть метод Application.Run('CreateMacros'), который запускает макрос. Попробуйте как то так, например:
Код:
app:olevariant;
app:=createOleObject('excel.application');
app.run('имя макроса');
app.quit;
app:=unassigned;
Сейчас времени нет на дельфи проверять, так что извиняюсь, если ошибся где-то.