YAML File Toolbox für MS Access – lesbar UND mächtig
INI ist einfach, XML ist mächtig – YAML kombiniert das Beste aus beiden Welten: klare, menschenlesbare Syntax mit hierarchischen Strukturen, Arrays und UTF-8. Diese VBA-Toolbox bringt YAML nach MS Access: 13 Funktionen, reines VBA, 32/64-Bit.
In Teil 1 haben wir uns INI-Dateien angeschaut, in Teil 2 XML. Jetzt kommt die nächste Evolution: YAML. INI ist großartig für einfache Einstellungen, XML ist leistungsstark – aber YAML kombiniert das Beste aus beiden Welten:
- Einfach und lesbar – klare Syntax ohne übermäßige Tags oder Klammern.
- Hierarchisch – wie XML, aber viel eleganter.
- UTF-8 – alle Sprachen, Sonderzeichen und Emojis.
- Industriestandard – Docker, Kubernetes, Ansible, GitHub Actions.
- Kompakt – weniger Overhead als XML.
INI vs. XML vs. YAML – der große Vergleich
| Merkmal | INI | XML | YAML |
|---|---|---|---|
| Lesbarkeit | ⭐⭐⭐⭐⭐ exzellent | ⭐⭐⭐ gut | ⭐⭐⭐⭐⭐ exzellent |
| Dateigröße | ⭐⭐⭐⭐⭐ sehr klein | ⭐⭐ groß | ⭐⭐⭐⭐ klein |
| Lernkurve | ⭐⭐⭐⭐⭐ sehr einfach | ⭐⭐⭐ mittel | ⭐⭐⭐⭐ einfach |
| Hierarchie | ❌ nur 2 Ebenen | ✅ unbegrenzt | ✅ unbegrenzt |
| UTF-8 | ⚠️ eingeschränkt | ✅ vollständig | ✅ vollständig |
| Kommentare | ✅ ; | ✅ <!-- --> | ✅ # |
| Datentypen | ❌ nur Strings | ⚠️ mit Schema | ✅ eingebaut |
| Arrays/Listen | ❌ nein | ⚠️ verbose | ✅ nativ |
| Validierung | ❌ nein | ✅ Schema (XSD) | ✅ Schema (JSON) |
| Verbreitung | ⭐⭐⭐ Legacy | ⭐⭐⭐⭐ hoch | ⭐⭐⭐⭐⭐ sehr hoch |
| Windows nativ | ✅ Built-in API | ✅ MSXML | ❌ kein native |
| Geschwindigkeit | ⭐⭐⭐⭐⭐ sehr schnell | ⭐⭐⭐ mittel | ⭐⭐⭐⭐ schnell |
| Am besten für | einfache Configs | komplexer Austausch | moderne Configs |
Wann was verwenden?
- INI – ultra-einfache Konfiguration (nur Key-Value), maximale Performance, keine Hierarchie.
- XML – komplexe verschachtelte Strukturen (> 2 Ebenen), Datenaustausch mit externen Systemen, Schema-Validierung, XSLT.
- YAML – menschenlesbare Konfiguration mit Hierarchie, moderne Toolchains, Arrays und Datentypen, kleine Dateien, einfache Versionskontrolle.
Die 13 Funktionen der Toolbox
Alle Funktionen nutzen Late Binding (keine Referenzen nötig) und laufen in allen Access-Versionen (32/64-Bit).
1. YML_ReadValue – Werte auslesen.
strBackendPath = YML_ReadValue(strYmlPath, "Database", "BackendPath", "") 2. YML_WriteValue – Werte schreiben/aktualisieren. Erstellt Datei und Sektion automatisch; Sonderzeichen werden automatisch maskiert.
YML_WriteValue strYmlPath, "Database", "BackendPath", strSelectedPath 3. YML_PrintAll – komplette Datei ausgeben.
YML_PrintAll CurrentProject.Path & "\config.yml" 4. YML_GetSections – alle Sektionen auflisten.
Set colSections = YML_GetSections(strYmlPath)
For Each varSection In colSections
Debug.Print "Gefundene Sektion: " & varSection
Next 5. YML_GetKeys – alle Keys einer Sektion.
Set colKeys = YML_GetKeys(strYmlPath, "Database")
For Each varKey In colKeys
Debug.Print varKey & " = " & YML_ReadValue(strYmlPath, "Database", CStr(varKey))
Next 6. YML_DeleteSection – ganze Sektion löschen.
If YML_SectionExists(strYmlPath, "OldModule") Then
YML_DeleteSection strYmlPath, "OldModule"
End If 7. YML_DeleteKey – einzelnen Key löschen.
YML_DeleteKey strYmlPath, "Session", "TempPassword" 8. YML_SectionExists – Sektion prüfen.
If Not YML_SectionExists(strYmlPath, "DatabaseV2") Then
' Sektion anlegen ...
End If 9. YML_KeyExists – Key prüfen.
If Not YML_KeyExists(strYmlPath, "Features", "AutoBackup") Then
YML_WriteValue strYmlPath, "Features", "AutoBackup", "True"
End If 10. YML_PrintStructured – strukturierte Ausgabe.
YML_PrintStructured strYmlPath 11. YML_GetAllValues – Dictionary aller Werte.
Set dictDB = YML_GetAllValues(strYmlPath, "Database")
Debug.Print "Server: " & dictDB("Server")
Debug.Print "Port: " & dictDB("Port")
Debug.Print "Timeout: " & dictDB("Timeout") 12. YML_ValidateFormat – Format validieren.
If Not YML_ValidateFormat(strImportedYmlPath) Then
MsgBox "Die importierte Konfiguration ist fehlerhaft!", vbCritical
End If Geprüft wird u. a.: Datei existiert und ist lesbar · YAML ist wohlgeformt · keine doppelten Sektionen · keine doppelten Keys je Sektion · alle Sektionen und Keys haben Namen.
13. YML_Compare – zwei YAML-Dateien vergleichen.
If Not YML_Compare(strOldConfig, strNewConfig) Then
Debug.Print "Änderungen erkannt - Details im Direktfenster"
End If Real-World-Beispiele
Multi-Backend-Unterstützung:
YML_WriteValue strYmlPath, "Backends", "Production", "\\Server\DB\Prod.accdb"
YML_WriteValue strYmlPath, "Backends", "Test", "\\Server\DB\Test.accdb"
YML_WriteValue strYmlPath, "Backends", "Development", "C:\Dev\DB.accdb"
YML_WriteValue strYmlPath, "Settings", "CurrentEnvironment", "Production" Ergebnis in YAML:
Backends:
Production: "\\\\Server\\DB\\Prod.accdb"
Test: "\\\\Server\\DB\\Test.accdb"
Development: "C:\\Dev\\DB.accdb"
Settings:
CurrentEnvironment: ProductionEinstellungen mit Arrays – YAML eignet sich perfekt für Listen (Farbschemata, Serverlisten, Feature-Flags):
YML_WriteValue strYmlPath, "UI", "AvailableThemes", "[Light, Dark, HighContrast]"
YML_WriteValue strYmlPath, "UI", "CurrentTheme", "Dark"
YML_WriteValue strYmlPath, "UI", "PrimaryColors", "[#FF0000, #00FF00, #0000FF]" Ergebnis in YAML:
UI:
AvailableThemes: "[Light, Dark, HighContrast]"
CurrentTheme: Dark
PrimaryColors: "[#FF0000, #00FF00, #0000FF]"User-spezifische Einstellungen mit UTF-8:
YML_WriteValue strYmlPath, "UI", "Language", "DE"
YML_WriteValue strYmlPath, "UI", "Theme", "Dark"
YML_WriteValue strYmlPath, "UI", "WelcomeMessage", "Willkommen zurück, Müller!"
YML_WriteValue strYmlPath, "Export", "DefaultFolder", "C:\Users\Marcus\Exports" Ergebnis in YAML:
UI:
Language: DE
Theme: Dark
WelcomeMessage: "Willkommen zurück, Müller!"
Export:
DefaultFolder: "C:\\Users\\Marcus\\Exports"Die Vorteile auf einen Blick
- Update-sicher, UTF-8-fähig und lesbar (saubere Syntax ohne XML-Tags).
- Industriestandard (Docker, Kubernetes, CI/CD) und kompakt (kleiner als XML).
- 32/64-Bit, ohne Abhängigkeiten (reines VBA, Late Binding), mit Auto-Escaping, Kommentaren (
#) und Inline-Arrays wie[1, 2, 3].
Damit ist die Trilogie über Konfigurationsdateiformate abgeschlossen – INI, XML und YAML. Je nach Anwendungsfall hast du jetzt das passende Werkzeug.
Einfach ausprobieren
Über die mitgelieferte Testing-Form probierst du die Funktionen direkt aus. Die ausführliche Beschreibung findest du wie gewohnt gut dokumentiert direkt im Code.
Download
Eine VBA-Toolbox für MS Access mit 13 Funktionen für YAML-Dateien: lesbar und hierarchisch, mit Arrays und UTF-8 – lesen, schreiben, validieren und vergleichen, ganz ohne Referenzen.




