YML File Toolbox -- Die Power von YML!
Warum YAML? Einfachheit trift Power! đȘ
In Teil 1 haben wir uns INI-Dateien angeschaut -- eine einfache und bewĂ€hrte Lösung fĂŒr Konfigurationsmanagement. In Teil 2 haben wir XML-Dateien erkundet -- mĂ€chtig und vielseitig. Jetzt wird es Zeit fĂŒr die nĂ€chste Evolution::
YML Dateien!
Ja, INI-Dateien sind groĂartig fĂŒr einfache Einstellungen, und XML ist leistungsstark. Aber YAML kombiniert das Beste aus beiden Welten:
â Einfach und lesbar: Klare Syntax ohne ĂŒbermĂ€Ăige Tags oder Klammern
â Hierarchische Strukturen: Genau wie XML, aber viel eleganter
â UTF-8-UnterstĂŒtzung: Alle Sprachen, Sonderzeichen und sogar Emojis -- kein Problem
â Industriestandard: Verwendet von Docker, Kubernetes, Ansible, GitHub Actions
â Menschenfreundlich: Leicht zu lesen und schreiben, auch fĂŒr Nicht-Programmierer
â Kompakt: Weniger Overhead als XML
Mein Fazit: INI fĂŒr ultra-einfache FĂ€lle, YAML wenn du Lesbarkeit UND Power brauchst!
đ INI vs. XML vs. YAML â Der groĂe Vergleich
Hier ist eine umfassende Ăbersicht ĂŒber alle drei Formate:
Merkmal | INI-Dateien | XML-Dateien | YAML-Dateien |
Lesbarkeit | âââââ Exzellent | âââ Gut | âââââ Exzellent |
DateigröĂe | âââââ Sehr klein | ââ GroĂ | ââââ Klein |
Lernkurve | âââââ Sehr einfach | âââ Mittel | ââââ Einfach |
Hierarchie | â Nur 2 Ebenen | â Unbegrenzt | â Unbegrenzt |
UTF-8-Support | â ïž EingeschrĂ€nkt | â VollstĂ€ndig | â VollstĂ€ndig |
Kommentare | â Ja (;) | â Ja (<!-- -->) | â Ja (#) |
Datentypen | â Nur Strings | â ïž Mit Schema | â Eingebaut |
Arrays/Listen | â Nein | â ïž Verbose | â Native |
Validierung | â Nein | â Schema (XSD) | â Schema (JSON) |
Verbreitung | âââ Legacy | ââââ Hoch | âââââ Sehr hoch |
Windows Native | â Built-in API | â MSXML | â Kein native |
Geschwindigkeit | âââââ Sehr schnell | âââ Mittel | ââââ Schnell |
Am besten fĂŒr | Simple Configs | Komplexer Austausch | Moderne Configs |
đŻ Wann was verwenden?
â Verwenden Sie INI, wenn:
- Sie eine extrem einfache Konfiguration benötigen (nur SchlĂŒssel-Wert-Paare)
- Maximale Leistung erforderlich ist
- Sie die Windows-API verwenden
- Keine Hierarchie erforderlich ist
â Verwenden Sie XML, wenn:
- Sie komplexe verschachtelte Strukturen (>2 Ebenen) benötigen
- Sie Daten mit externen Systemen austauschen
- Eine Schema-Validierung erforderlich ist
- Sie XSLT-Transformationen benötigen
- Die Einhaltung von Industriestandards erforderlich ist
â Verwenden Sie YAML, wenn:
- Sie eine fĂŒr Menschen lesbare Konfiguration wĂŒnschen
- Sie eine Hierarchie UND Lesbarkeit benötigen
- Sie mit modernen Toolchains arbeiten
- Sie Arrays und Datentypen benötigen
- Die DateigröĂe eine Rolle spielt
- Sie eine einfache Versionskontrolle wĂŒnschen
đ§° Die komplette YML-Datei-Toolbox â 13 leistungsstarke Funktionen!
Ich habe eine umfassende VBA-Bibliothek entwickelt, die MS Access um YAML-UnterstĂŒtzung erweitert. XML. Alle Funktionen verwenden Late Binding (keine Referenzen erforderlich) und funktionieren in allen Access-Versionen (32/64-Bit).
đ 1. YML_ReadValue - Werte auslesen
Die Basis-Funktion fĂŒr das Lesen von Konfigurationswerten.
strBackendPath = YML_ReadValue(strXmlPath, "Database", "BackendPath", "")
âïž 2. YML_WriteValue - Werte schreiben/aktualisieren
Speichert Werte in der YML-Datei. Erstellt automatisch Datei und Sektion, falls nicht vorhanden! Sonderzeichen werden automatisch maskiert.
YML_WriteValue strXmlPath, "Database", "BackendPath", strSelectedPath
đšïž 3. YML_PrintAll - Komplette Datei ausgeben
Zeigt den gesamten Inhalt formatiert im Immediate Window -- perfekt fĂŒr Debugging!
YML_PrintAll CurrentProject.Path & "\config.yml"
đ 4. YML_GetSections - Alle Sektionen auflisten
Gibt eine Collection aller Sektionen zurĂŒck.
Set colSections = YML_GetSections(strYmlPath)
For Each varSection In colSections
Debug.Print "Gefundene Sektion: " & varSection
Next
đ 5. YML_GetKeys - Alle Keys einer Sektion
Perfekt fĂŒr dynamische Verarbeitung aller Einstellungen.
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
Entfernt einen kompletten Konfigurationsbereich.
If YML_SectionExists(strXmlPath, "OldModule") Then
YML_DeleteSection strXmlPath, "OldModule"
End If
â 7. YML_DeleteKey - Einzelnen Key löschen
Löscht spezifische Einstellungen.
YML_DeleteKey strYmlPath, "Session", "TempPassword"
âïž 8. YML_SectionExists - Sektion prĂŒfen
PrĂŒft, ob ein Konfigurationsbereich existiert.
If Not YML_SectionExists(strYmlPath, "DatabaseV2") Then ...
â 9. YML_KeyExists - Key prĂŒfen
Checkt, ob ein spezifischer Wert vorhanden ist.
If Not YML_KeyExists(strXmlPath, "Features", "AutoBackup") Then
YML_WriteValue strXmlPath, "Features", "AutoBackup", "True"
End If
đïž 10. YML_PrintStructured - Strukturierte Ausgabe
Zeigt die YML hierarchisch organisiert -- ideal fĂŒr Dokumentation!
YML_PrintStructured strYmlPath
đŠ 11. YML_GetAllValues - Dictionary aller Werte
Holt alle Key-Value-Paare einer Sektion als Dictionary -- super effizient!
Set dictDB = YML_GetAllValues(strXmlPath, "Database")
Debug.Print "Server: " & dictDB("Server")
Debug.Print "Port: " & dictDB("Port")
Debug.Print "Timeout: " & dictDB("Timeout")
đ 12. YML_ValidateFormat - Format validieren
PrĂŒft die YML-Datei auf Fehler: fehlerhaftes YML, doppelte Keys, fehlende Attribute.
If Not YML_ValidateFormat(strImportedYmlPath) Then
MsgBox "Die importierte Konfiguration ist fehlerhaft!", vbCritical
End If
ValidierungsprĂŒfung:
- Datei existiert und ist lesbar
- YML ist wohlgeformt (korrekte Syntax)
- Keine doppelten Sektionen
- Keine doppelten Keys innerhalb einer Sektion
- Alle Sektionen und Keys haben Namen
đ 13. YML_Compare - Zwei YML-Dateien vergleichen
DER HAMMER fĂŒr Versionierung und Migrations-Management!
If Not YML_Compare(strOldConfig, strNewConfig) Then
Debug.Print "Ănderungen erkannt - siehe Details im Immediate Windowâ
End If
Perfekt fĂŒr:
đ Versions-Vergleich nach Updates
đ Fehlersuche bei Konfigurationsproblemen
đ Dokumentation von Ănderungen
â ïž Warnung bei kritischen Abweichungen
đ Real-World Use Cases -- Ăber Konfigurationen hinaus
Use Case 1: Multi-Backend-UnterstĂŒtzung (Klassisch)
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: Production
Use Case 2: Anwendungseinstellungen mit Arrays
YAML eignet sich perfekt zum Speichern von Listen! Beispiel: 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]"
Use Case 3: Vorlagen fĂŒr Berichte exportieren
Speichern Sie Exporteinstellungen (Kopfzeilen, Formate, Filter) in YAML und laden Sie sie dynamisch.
YML_WriteValue strYmlPath, "ReportTemplate_Sales", "Title", "Monthly Sales Report"
âYML_WriteValue strYmlPath, "ReportTemplate_Sales", "DateFormat", "DD.MM.YYYY"
âYML_WriteValue strYmlPath, "ReportTemplate_Sales", "Columns", "Date,Customer,Amount,Status"
âYML_WriteValue strYmlPath, "ReportTemplate_Sales", "SortBy", "Amount DESC"
Ergebnis in YAML:
ReportTemplate_Sales:
â Title: Monthly Sales Report
â DateFormat: DD.MM.YYYY
â Columns: "Date,Customer,Amount,Status"
â SortBy: Amount DESC
Use Case 4: Benutzereinstellungen mit UTF-8
Perfekt fĂŒr internationale Anwendungen! Alle Sonderzeichen funktionieren einwandfrei.
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: YML bleibt bei Frontend-Updates unverÀndert
â
UTF-8-UnterstĂŒtzung: Alle Sprachen und Sonderzeichen funktionieren einwandfrei
â
Lesbar: Saubere Syntax ohne XML-Tags
â
Industriestandard: Wird von Docker, Kubernetes, CI/CD-Pipelines verwendet
â
Kompakt: Kleinere DateigröĂen als XML
â
32/64-Bit: Funktioniert in allen Access-Versionen
â
Keine AbhÀngigkeiten: Reines VBA (Late Binding), keine Referenzen erforderlich
â
Auto-Escaping: Sonderzeichen (&, <, >, ", ') werden automatisch verarbeitet
â
Kommentare: ative UnterstĂŒtzung mit dem Zeichen #
â
Arrays: Inline-Arrays wie [1, 2, 3]
â ïž Wichtig: Behandlung von Sonderzeichen
Das Modul maskiert automatisch alle Sonderzeichen. Sie mĂŒssen sich darum keine Gedanken machen!
đź Wie geht es weiter?
Damit ist meine Trilogie ĂŒber Konfigurationsdateiformate abgeschlossen!
đ§Ș Einfach ausprobieren
Anhand meiner kleinen Testing-Form könnt ihr die Funktionen direkt ausprobieren. Das macht es einfach, die Funktionen Schritt fĂŒr Schritt kennenzulernen .
Du entwickelst viel mit Access? Dann probierâs aus â ich freu mich auf dein Feedback oder Ideen fĂŒr weitere Funktionen! đ
Die ausfĂŒhrliche Beschreibung und alle Hinweise findet ihr direkt im Code â wie gewohnt gut dokumentiert.
đ„ DOWNLOAD
Version: 1.0 18.12.2025




