There are two types of Macros in Revit - Document macros which only live in a project file, and Application macros which can be run across multiple project files.
Application macros have an overhead that makes them more complicated to write.
Only Document macros require copying between project files.
There are different methods depending on how they are constructed. Macros are written in computer language (C# or VB) so are not for the faint hearted.
If you are considering learning how to write macros look at Dynamo first. It is probably simpler to use.
For an introduction to macros:
http://www.augi.com/library/getting-started-with-revit-macros
This link provides a number of methods to copy macros between project files.
http://archsmarter.com/copy-revit-macros/