$\textsf{TRUE}.$
A macro is evaluated at compile time whereas a function call happens at runtime. So, we can write a macro to rename any symbol which is not possible to be replaced by a simple subroutine call. For example consider the following $C$ code.
#define type int
type foo (type arg1)
{
...
}
#undef type
In the above code a macro is used to define a type which is used as the return and argument types for the function $\textsf{foo}.$ This is not possible to be implemented as a simple subroutine call (but can be done using $\textsf{typedef}$ is the language supports it).