Ab 2007 sind die Icons in dem Template, dass die Icons auch anzeigt und irgendwo im Programm anzeigt (Ribbon, Backstage, ...).
Es gibt bei VBA keine separate Ressourcendatei die man da jetzt einbinden würde. Also, sagen wir so, vielleicht geht das mit dem Verweis auf eine Bibliothek und dann holt sich das Callback das vielleicht daher. Aber das ist relativ umständlich.
Du tust eigentlich was ganz einfaches.
- Du schreibst eine Public Sub MeinTollerBefehl() in zB einer zentralen Makrodatei.
- Jetzt muss der Befehl in die Oberfläche, und zwar nicht im Ribbon AddIn sondern in dein eigenes Ribbon.
- Du schließt die dotm, rufst den Custom Ui Editor auf, fügst den 2010er XML Code ein und baust damit ein Ribbon auf - ganz einfach.
- Jetzt fehlt ein Icon. Entweder du nimmst in XML imageMso="" oder du fügst über den Custom UI Editor eine 24bit PNG ein. Diese PNG hat eine ID (= Dateiname) - also "MeinTollerBefehlIcon".
- Im Custom UI Editor trägst du jetzt statt imageMso="" > image="MeinTollerBefehlIcon" ein.
- Du validierst den XML Code, speicherst und schließt. Sobald du die dotm jetzt öffnest, taucht dein neues Ribbon auf. Word sucht automatisch in den Ressourcen nach dem Icon zum Befehl und findet es anhand der ID.
>> Damit hast du Code und Oberfläche (+ Icon) in einer Datei. Diese kannst du jetzt weitergeben für die Versionen 2010 - 365.
Deine separate dll mit den Icons ist unnötig, ist ja eh alles in der dotm drin. Du ordnest Icons weder über VBA noch der Oberflächenanpassung von Word zu!
Wenn du ein Icon austauschen willst, dann ersetzt du es über den Custom Ui Editor in der dotm.
- Als letzten Schritt würdest du jetzt noch einen RibbonHandler implementieren Public Sub RibbonClick(control As IRibbonControl) ... Select Case control.id ... Case "MeinTollerBefehlButton": MeinTollerBefehl() ... End Select
der dir die eigentliche Routine aufruft.
------------------
Wenn du auf VSTO wechselst, dann fügst du die Icons nicht mehr in die Vorlage ein - sofern du ein AddIn und keine Vorlage baust. Das AddIn initialisiert ein Ribbon Objekt, läd die Icons aus der Ressource nach (das ist dann womöglich eine dll aus Visual Studio) und zeigt es an.
Das Verteilen dieser Lösung erfolgt ja dann zB als OneClick Installation. Soweit bin ich aber noch nicht in der Praxis.