In reply to randomcoder:
You still did not explain why you need individually named signals instead of using an array in the first place.
As you are already aware, `define macros get expanded before any parsing any SystemVerilog code. There is no way to have a macro loop. Your only other option is using an external macro processor. That can make debugging much more difficult.