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-Attribut | Bedeutung |
---|---|
onAction | Wird beim Klick aufgerufen |
onLoad | Beim Start der IDE |
onVisible | Wenn Tab aktiv wird |
getLabel | Dynamisches 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.
Keine Antworten