No - only variables of the scope the function is defined in are accessible. You can’t use variables of a “sibling scope”. This is unrelated to macros, as they only transform some code into some other code. Scope is a semantic concept, while macros operate only on syntax.
What are you trying to achieve in the grand scheme of things? Is there a reason you can’t pass the variable into the called function directly?
I have quite nested function a lot of times i need to pass the variable from top function through all intermidiate to the bottom (most nested) and in all of this passing frequently i mess the order of positional arguments as there is no possibility of named arguments, and arguments list become big part of a code