Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: XML Datei mittels VBA erstellen

XML Datei mittels VBA erstellen
05.04.2022 13:38:21
Florian
Hi,
ich versuche mittels VBA eine XML-Datei zu schreiben. Allerdings erhalte ich in dieser Zeile einen LZF 52 (Dateiname oder -nummer falsch).

Open strFile For Output As #1
Das ist mein gesamter Code:

Sub XML_Export()
Dim strFile As String, Text As String
Dim lngRow, lngCol As Long
Dim varShow
Dim wksXMLDaten As Worksheet
strFile = ThisWorkbook.Path & "\test.xml"
Open strFile For Output As #1
With wksXMLDaten
'** XML-Header schreiben
Print #1, " "
Print #1, " ""
[...] Hier steh noch mehr Code [...]
End With
End Sub
Kann jemand helfen?
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: XML Datei mittels VBA erstellen
05.04.2022 13:48:42
Rudi
Hallo,
du solltest die Datei auch wieder schließen!!!
Close #1
Gruß
Rudi
AW: XML Datei mittels VBA erstellen
05.04.2022 14:09:30
Florian
Hab es vor dem End Sub eingefügt. Leider ohne Auswirkung auf den Fehler.
AW: XML Datei mittels VBA erstellen
05.04.2022 14:14:48
Hardy
Hallo Florian,
hast du schreibrechte auf dem Laufwerk?
Gruß
Hardy R
Anzeige
AW: XML Datei mittels VBA erstellen
05.04.2022 14:16:49
Florian
Ja, ich bin Admin. Ich will ja auch in dem Verzeichnis speichern, in dem die Excel selbst liegt, also ich auch diese speichern kann.
AW: XML Datei mittels VBA erstellen
05.04.2022 14:15:32
Rudi
weil die Datei wahrscheinlich noch offen ist.
gib mal im Direktfenster Close #1 ein.
AW: XML Datei mittels VBA erstellen
05.04.2022 14:18:26
Florian
Das wars. Danke! :)
Anzeige
AW: XML Datei mittels VBA erstellen
05.04.2022 14:23:58
Florian
Ah ne, geht doch nicht. Es lief zwar kurz, dann habe ich im folgenden Code paar Anpassungen gemacht, da es auf ein Fehler lief und nun kommt wieder der Dateiname/-nummer Fehler.
Habe Close #1 über das Direktfenster und mit der Sub extra nochmal ausgeführt.
Ohne Erfolg.

Sub XML_schliessen()
Close #1
End Sub

Anzeige
AW: XML Datei mittels VBA erstellen
05.04.2022 14:38:59
Rudi
Hallo,

Sub XML_Export()
Dim strFile As String, Text As String
Dim lngRow, lngCol As Long
Dim varShow
Dim wksXMLDaten As Worksheet
Dim intFile As Integer
strFile = ThisWorkbook.Path & "\test.xml"
intFile = FreeFile
Open strFile For Output As #intFile
With wksXMLDaten
'** XML-Header schreiben
Print #intFile, " "
Print #intFile, " """
' [...] Hier steh noch mehr Code [...]
End With
Close intFile
End Sub

Anzeige
AW: XML Datei mittels VBA erstellen
05.04.2022 16:33:35
Florian
Hab Deinen Code eingefügt und schon beim ersten Test den gleichen Fehler erhalten.
AW: XML Datei mittels VBA erstellen
05.04.2022 17:59:34
Rudi
funktioniert bei mir einwandfrei.
AW: XML Datei mittels VBA erstellen
05.04.2022 18:16:58
Florian
Hab herausgefunden woran es liegt.
Meine Excel liegt in einem Synchronisierten SharePoint Verzeichnis. Daran stört sich Excel wohl, obwohl ich vollen Zugriff darauf habe.
Hab es einfach mal in den lokalen Ordner Downloads gespeichert und schwups, es läuft.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

XML Datei mit VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine XML-Datei mittels VBA in Excel zu erstellen, befolge diese Schritte:

  1. Öffne Excel und erstelle ein neues Modul:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.
  2. Füge den folgenden VBA-Code ein:

    Sub XML_Export()
       Dim strFile As String
       Dim intFile As Integer
       Dim wksXMLDaten As Worksheet
    
       strFile = ThisWorkbook.Path & "\test.xml" ' Pfad zur XML-Datei
       intFile = FreeFile
       Open strFile For Output As #intFile
    
       ' Beispiel XML-Header
       Print #intFile, "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>"
       Print #intFile, "<eaidrequest xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">"
    
       ' Hier können weitere Daten hinzugefügt werden
    
       Close intFile ' Datei schließen
    End Sub
  3. Führe das Skript aus:

    • Drücke F5 oder wähle Run > Run Sub/UserForm.
  4. Überprüfe den Speicherort:

    • Die XML-Datei sollte im gleichen Verzeichnis wie die Excel-Datei gespeichert werden. Achte darauf, dass du Schreibrechte in diesem Ordner hast.

Häufige Fehler und Lösungen

  • Fehler 52: "Dateiname oder -nummer falsch":

    • Dieser Fehler tritt häufig auf, wenn der Pfad zur Datei nicht korrekt ist oder die Datei bereits geöffnet ist. Stelle sicher, dass die XML-Datei nicht bereits verwendet wird.
  • Schreibrechte überprüfen:

    • Vergewissere dich, dass du in dem Verzeichnis, in dem du die XML-Datei speichern möchtest, die entsprechenden Schreibrechte hast.
  • Sync-Probleme mit SharePoint:

    • Wenn du in einem synchronisierten SharePoint-Verzeichnis arbeitest, kann Excel Probleme beim Speichern der Datei haben. Versuche, die Datei lokal zu speichern, z.B. im Downloads-Ordner.

Alternative Methoden

  • Excel XML erstellen ohne VBA:

    • Du kannst auch XML-Dateien direkt in Excel erstellen, indem du die Funktion Speichern unter wählst und das Dateiformat "XML-Daten (*.xml)" auswählst. Dies ist eine einfache Möglichkeit, eine XML-Datei ohne Programmierung zu erstellen.
  • Verwendung von Power Query:

    • Wenn du Daten aus Excel in XML umwandeln möchtest, kannst du Power Query verwenden, um die Daten zu transformieren und anschließend in XML zu exportieren.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du Daten aus einer Excel-Tabelle in eine XML-Datei exportieren kannst:

Sub XML_Export_Tabelle()
    Dim strFile As String
    Dim intFile As Integer
    Dim wksXMLDaten As Worksheet
    Dim lngRow As Long

    Set wksXMLDaten = ThisWorkbook.Sheets("Daten") ' Arbeitsblatt mit den Daten
    strFile = ThisWorkbook.Path & "\Daten.xml"
    intFile = FreeFile
    Open strFile For Output As #intFile

    Print #intFile, "<?xml version=""1.0"" encoding=""UTF-8""?>"
    Print #intFile, "<Daten>"

    For lngRow = 1 To wksXMLDaten.Cells(Rows.Count, 1).End(xlUp).Row
        Print #intFile, "<Eintrag>"
        Print #intFile, "<Name>" & wksXMLDaten.Cells(lngRow, 1).Value & "</Name>"
        Print #intFile, "<Wert>" & wksXMLDaten.Cells(lngRow, 2).Value & "</Wert>"
        Print #intFile, "</Eintrag>"
    Next lngRow

    Print #intFile, "</Daten>"
    Close intFile
End Sub

Tipps für Profis

  • Nutze Error Handling: Füge Error-Handling in deinen Code ein, um unerwartete Fehler abzufangen. Das kann so aussehen:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
      MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Dokumentation: Halte deinen Code gut dokumentiert, um später einfacher Änderungen vornehmen zu können.

  • Teste in einer sicheren Umgebung: Führe deine Skripte in einer Testumgebung aus, bevor du sie auf wichtige Daten anwendest, um Datenverluste zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich mit VBA eine XML-Datei aus Excel erstellen? Ja, du kannst eine XML-Datei mit VBA erstellen, indem du den Code wie oben beschrieben verwendest.

2. Was ist der Unterschied zwischen XLM und XML? XLM ist ein älteres Dateiformat, das hauptsächlich für Excel-Makros verwendet wird. XML ist ein modernes, plattformunabhängiges Format zur strukturierten Datenübertragung.

3. Wie speichere ich eine XML-Datei in einem anderen Verzeichnis? Ändere einfach die strFile-Variable im Code, um den gewünschten Speicherort anzugeben. Beispiel: strFile = "C:\MeinOrdner\test.xml".

4. Was kann ich tun, wenn ich keinen Zugriff auf einen bestimmten Ordner habe? Wenn du keine Berechtigungen hast, versuche, die XML-Datei in einem anderen Ordner zu speichern, z.B. in deinem Benutzerordner oder auf dem Desktop.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige