I use a combination:
The "working" code is in a stencil named code.vss, that contains no shapes, only the code, and is distributed to all users.
In the template is a reference to that stencil in the VBA project, so the stencil's code "is known" in the template/drawing.
That stencil is not visible in the template, because I don't have it open in the stencil explorer. It is only open because of the reference in the VBA project.
The code in the template can be started via Shortcuts and does nothing except starting the "working" code in the stencil.
So I can make code changes in the stencil and "only" need to distribute that stencil again, to make the changes available for all users.
Problems:
If I want to create a completly new macro, I can distribute it with the stencil, so it's available for all, but you can't call that macro from older drawings, because there's no Shortcut available yet. The Shortcut is only available in new template/drawing.
So my solution is only a little bit better than yours because I can propagate code changes, but not entirely new code.
---------------
Another solution I'm thinking about:
- Scenario like above
- DocumentCreated or DocumentOpened event start a macro in the stencil.
- That macro creates a menu for all the available macros in the stencil.
- The menuitems get Shortcuts (don't know if that is possible)
So in theory the version of the stencil decides what code is available, as it should be.
Critical here is the last point: A way for the stencil to establisgh shortcuts....if it works.