XML File Toolbox fĂŒr MS Access â 13 Funktionen mit der Power von XML
INI-Dateien sind groĂartig fĂŒr einfache Einstellungen â aber sobald die Anwendung wĂ€chst, braucht es mehr: Hierarchien, UTF-8, Validierung. Zeit fĂŒr XML! Diese VBA-Toolbox bringt INI-Ă€hnliche Einfachheit mit der Power von XML: 13 Funktionen, Late Binding, 32/64-Bit.
Im INI-Helper haben wir uns INI-Dateien angeschaut â eine einfache, bewĂ€hrte Lösung fĂŒrs Konfigurationsmanagement. Jetzt geht es eine Stufe weiter: XML-Dateien. INI ist groĂartig fĂŒr einfache Einstellungen, stöĂt aber schnell an Grenzen:
- keine hierarchischen Strukturen (nur Sektion â Key â Wert)
- keine Datenvalidierung
- eingeschrĂ€nkte UnterstĂŒtzung fĂŒr internationale Zeichen
- ungeeignet fĂŒr komplexe Datenstrukturen
XML: nicht nur fĂŒr Konfigurationen
XML ist viel vielseitiger als INI:
- Hierarchische Datenstrukturen â perfekt fĂŒr verschachtelte Konfigurationen, Kataloge oder Produktdatenbanken.
- UTF-8 â alle Sprachen, Sonderzeichen und sogar Emojis.
- Datenaustausch â XML ist der Standard fĂŒr Systemintegration.
- Validierung â Struktur und Inhalt prĂŒfen.
- Eingebaut â MSXML ist in jeder Windows-Installation verfĂŒgbar.
Kurz: INI fĂŒr einfache FĂ€lle, XML wenn du Power und FlexibilitĂ€t brauchst. Alle Funktionen nutzen Late Binding (keine Referenzen nötig) und laufen in allen Access-Versionen (32/64-Bit).
Die 13 Funktionen der Toolbox
1. XML_ReadValue â Werte auslesen.
strBackendPath = XML_ReadValue(strXmlPath, "Database", "BackendPath", "") 2. XML_WriteValue â Werte schreiben/aktualisieren. Erstellt Datei und Sektion automatisch; Sonderzeichen werden automatisch escaped.
XML_WriteValue strXmlPath, "Database", "BackendPath", strSelectedPath 3. XML_PrintAll â komplette Datei ausgeben. Formatiert im Direktfenster â perfekt zum Debuggen.
XML_PrintAll CurrentProject.Path & "\config.xml" 4. XML_GetSections â alle Sektionen auflisten.
Set colSections = XML_GetSections(strXmlPath)
For Each varSection In colSections
Debug.Print "Gefundene Sektion: " & varSection
Next 5. XML_GetKeys â alle Keys einer Sektion.
Set colKeys = XML_GetKeys(strXmlPath, "Database")
For Each varKey In colKeys
Debug.Print varKey & " = " & XML_ReadValue(strXmlPath, "Database", CStr(varKey))
Next 6. XML_DeleteSection â ganze Sektion löschen.
If XML_SectionExists(strXmlPath, "OldModule") Then
XML_DeleteSection strXmlPath, "OldModule"
End If 7. XML_DeleteKey â einzelnen Key löschen.
XML_DeleteKey strXmlPath, "Session", "TempPassword" 8. XML_SectionExists â Sektion prĂŒfen.
If Not XML_SectionExists(strXmlPath, "DatabaseV2") Then
' Sektion anlegen ...
End If 9. XML_KeyExists â Key prĂŒfen.
If Not XML_KeyExists(strXmlPath, "Features", "AutoBackup") Then
XML_WriteValue strXmlPath, "Features", "AutoBackup", "True"
End If 10. XML_PrintStructured â strukturierte Ausgabe. Zeigt die XML hierarchisch â ideal fĂŒr die Dokumentation.
XML_PrintStructured strXmlPath 11. XML_GetAllValues â Dictionary aller Werte.
Set dictDB = XML_GetAllValues(strXmlPath, "Database")
Debug.Print "Server: " & dictDB("Server")
Debug.Print "Port: " & dictDB("Port")
Debug.Print "Timeout: " & dictDB("Timeout") 12. XML_ValidateFormat â Format validieren. PrĂŒft auf fehlerhaftes XML, doppelte Keys und fehlende Attribute.
If Not XML_ValidateFormat(strImportedXmlPath) Then
MsgBox "Die importierte Konfiguration ist fehlerhaft!", vbCritical
End If GeprĂŒft wird u. a.: Datei existiert und ist lesbar · XML ist wohlgeformt · keine doppelten Sektionen · keine doppelten Keys je Sektion · alle Sektionen und Keys haben Namen.
13. XML_Compare â zwei XML-Dateien vergleichen. Der Hammer fĂŒr Versionierung und Migrations-Management.
If Not XML_Compare(strOldConfig, strNewConfig) Then
Debug.Print "Ănderungen erkannt - Details im Direktfenster"
End If Perfekt fĂŒr Versions-Vergleiche nach Updates, Fehlersuche, Ănderungs-Dokumentation und Warnungen bei kritischen Abweichungen.
Real-World-Beispiele â ĂŒber Konfigurationen hinaus
Multi-Backend-UnterstĂŒtzung:
XML_WriteValue strXmlPath, "Backends", "Production", "\\Server\DB\Prod.accdb"
XML_WriteValue strXmlPath, "Backends", "Test", "\\Server\DB\Test.accdb"
XML_WriteValue strXmlPath, "Backends", "Development", "C:\Dev\DB.accdb"
XML_WriteValue strXmlPath, "Settings", "CurrentEnvironment", "Production" Produktkatalog mit hierarchischer Struktur â XML ist perfekt fĂŒr verschachtelte Daten:
<?xml version="1.0" encoding="UTF-8"?>
<Product>
<Section name="Electronics">
<Key name="Laptop_001">Dell XPS 15, âŹ1499, 16GB RAM</Key>
<Key name="Laptop_002">MacBook Pro, âŹ2299, 32GB RAM</Key>
<Key name="Phone_001">iPhone 15, âŹ999, 256GB</Key>
</Section>
<Section name="Books">
<Key name="Programming_001">Clean Code, âŹ35.99</Key>
<Key name="Programming_002">Design Patterns, âŹ42.50</Key>
</Section>
</Product>Export-Vorlagen fĂŒr Reports:
XML_WriteValue strXmlPath, "ReportVorlage_Verkauf", "Titel", "Monatlicher Verkaufsbericht"
XML_WriteValue strXmlPath, "ReportVorlage_Verkauf", "DatumsFormat", "TT.MM.JJJJ"
XML_WriteValue strXmlPath, "ReportVorlage_Verkauf", "Spalten", "Datum,Kunde,Betrag,Status"
XML_WriteValue strXmlPath, "ReportVorlage_Verkauf", "Sortierung", "Betrag DESC" User-spezifische Einstellungen mit UTF-8 â alle Sonderzeichen funktionieren einwandfrei:
XML_WriteValue strXmlPath, "UI", "Language", "DE"
XML_WriteValue strXmlPath, "UI", "Theme", "Dark"
XML_WriteValue strXmlPath, "UI", "BegrĂŒĂungsText", "Willkommen zurĂŒck, MĂŒller!"
XML_WriteValue strXmlPath, "Export", "StandardOrdner", "C:\Benutzer\Marcus\Exporte" Systemintegration: Daten mit anderen Systemen austauschen, die XML erwarten (Webservices, ERP). Die Funktionen erstellen automatisch valides, wohlgeformtes XML.
Sonderzeichen? Automatisch behandelt
Das Modul escaped alle Sonderzeichen automatisch (&, <, >, ", ') â du musst dich um nichts kĂŒmmern.
XML_WriteValue strXmlPath, "Test", "Ampersand", "A & B" ' bleibt "A & B"
XML_WriteValue strXmlPath, "Test", "Quotes", "Er sagte ""Hallo""" ' automatisch escaped Die Vorteile auf einen Blick
- Update-sicher, UTF-8-fĂ€hig und hierarchisch fĂŒr komplexe, verschachtelte Strukturen.
- Robust: MSXML, seit Jahrzehnten bewĂ€hrt; universal als Standard fĂŒrs Datenaustausch.
- 32/64-Bit, ohne AbhÀngigkeiten (nur MSXML, Late Binding) und mit Auto-Escaping.
Ausblick: In der nÀchsten Folge stelle ich Àhnliche Tools vor, die Daten im .yml-Format speichern, schreiben und auslesen.
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 XML-Dateien: lesen, schreiben, Sektionen/Keys verwalten, validieren und vergleichen â hierarchisch, UTF-8-fĂ€hig, per MSXML und ohne Referenzen.




