Wie funktioniert das neue VBA-Add-In-Modell zur Erweiterung der Entwicklungsumgebung?

Was Microsoft da jetzt eingebaut hat

VBA wird nicht mehr weiterentwickelt?
Jein.
Die Sprache stagniert – aber das Drumherum bewegt sich.
Seit einiger Zeit gibt’s ein neues, offizielles Add-In-Modell fĂŒr die VBA-IDE.
Endlich kannst Du Funktionen direkt in den Editor einbauen, ohne COM-Gefrickel.

Was bringt mir das?

  • Eigene MenĂŒeintrĂ€ge in der VBA-OberflĂ€che
  • Tools direkt in die IDE integrieren
  • Code-Generatoren, Formatierer, Linter etc.
  • Kein Umweg ĂŒber externe EXE-Dateien
  • Keine Registry-Hacks mehr

Voraussetzungen

  • Office 365 (aktueller Channel)
  • Aktiviertes „VBA Add-ins“-Feature (per Gruppenrichtlinie oder Trust Center)
  • Add-In als .vbaAddIn-Datei oder per Manifest im Roaming-Verzeichnis

Du brauchst keinen COM-Wrapper mehr.
Nur eine Add-In-Datei mit XML und etwas VBA-Code.

Aufbau eines Add-Ins

Ein Add-In besteht aus:

  • einer XML-Datei fĂŒr das MenĂŒ und die Befehlsstruktur
  • einem Modul mit Deinen Makros oder Funktionen
  • optional: einer UI (UserForm, MsgBox etc.)

Beispiel fĂŒr ein einfaches Manifest (addin.xml):

<AddIn xmlns="http://schemas.microsoft.com/office/vba/addin">
  <Name>CodeFormatter</Name>
  <Description>Ein einfacher Code-Formatter fĂŒr VBA</Description>
  <HostApplication>Access</HostApplication>
  <CustomUI>
    <Tab id="MyTools" label="DatenschÀfer Tools">
      <Group id="ToolsGroup" label="Code">
        <Button id="btnFormatCode" label="Formatieren" onAction="FormatCode"/>
      </Group>
    </Tab>
  </CustomUI>
</AddIn>

Du legst die XML-Datei im %APPDATA%\Microsoft\VBA\Addins\-Ordner ab.
Oder packst sie als .vbaAddIn in einen zentralen Deployment-Ordner.

Zuordnung: XML-Befehl → VBA-Prozedur

Die onAction="FormatCode"-Angabe wird auf eine Sub in einem VBA-Modul gemappt.

Public Sub FormatCode()
    Dim vbComp As VBIDE.VBComponent
    Set vbComp = Application.VBE.ActiveCodePane.CodeModule

    Dim Zeile As Long
    For Zeile = 1 To vbComp.CountOfLines
        Dim Code As String
        Code = vbComp.Lines(Zeile, 1)
        
        ' Einfaches Beispiel: Whitespace entfernen
        Code = Trim(Code)
        vbComp.ReplaceLine Zeile, Code
    Next Zeile

    MsgBox "Code wurde formatiert.", vbInformation
End Sub

Du brauchst Zugriff auf Microsoft Visual Basic for Applications Extensibility.
Also: Verweis setzen auf VBIDE.

Welche Ereignisse Du nutzen kannst

XML-AttributBedeutung
onActionWird beim Klick aufgerufen
onLoadBeim Start der IDE
onVisibleWenn Tab aktiv wird
getLabelDynamisches Label (Function)

Die Callbacks mĂŒssen Public Sub sein und genau einen Parameter vom Typ IRibbonControl erwarten – auch wenn Du ihn nicht nutzt.

Public Sub FormatCode(control As IRibbonControl)
    ' Deine Logik
End Sub

Tipps aus der Praxis

  • Trenne MenĂŒaufbau und Logik
  • Lade Add-In nur in Access oder Excel, nicht gleichzeitig
  • Teste neue Add-Ins in einer separaten Office-Installation
  • Logging hilft – z. B. in eine Textdatei oder Tabelle schreiben
  • Wenn sich nichts tut: Ribbon neu laden
' Ribbon neu laden
Application.CommandBars("Ribbon").Invalidate

Beispiel: UserForm aus Add-In starten

Public Sub StarteTool(control As IRibbonControl)
    frmLogikTool.Show
End Sub

Du kannst Dir also eigene Tools direkt in die Entwicklungsumgebung hĂ€ngen – ohne Umweg.

Mein Fazit

Du willst Deine Entwicklungsumgebung produktiver machen?
Dann bau Dir eigene VBA-Add-Ins.
Endlich geht das sauber, dokumentiert – und ohne Registrierungshölle.

Ich nutze das regelmĂ€ĂŸig fĂŒr:

  • automatische Formatierung
  • Code-Dokumentation
  • Template-EinfĂŒgen
  • Error-Handling-Generatoren

Mach’s Dir bequemer.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert