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


Wenn du es hilfreich findest und seinen Wert anerkennst, wĂŒrde ich mich ĂŒber eine kleine Spende freuen, die den Aufwand und den Nutzen widerspiegelt, den es dir bietet. PayPal Eine kleine Spende