Let's start by defining some terms because "macro" has multiple meanings depending on the context.
NX has a macro language that can be used to record and replay user actions; I'm pretty sure you can call a macro from a journal file for execution.
Some C languages have the ability to preprocess the source code before compilation. This is often used to automate adding certain code or conditional compilation statements. C# does NOT support this type of macro.