Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel zu XML per VBA, Zeilen in XML gruppieren

Excel zu XML per VBA, Zeilen in XML gruppieren
29.10.2017 15:58:10
AmBall
Hallo zusammen, ich habe ein funktionierendes VBA-Script für die Erstellung einer XML Datei aus einer Excel Tabelle. Damit werden zeilenweise Bestelldaten jeweils in einen Block "Bestellung" geschrieben. Nun kommt es vor, dass unter Spalte 2 doppelt oder mehrfach identische ID's vorkommen. Ist das der Fall, sollen bestimmte Spalten (fett gedruckt) noch in den Block der ersten Zeile dieser identischen ID's geschrieben und dann kein eigener Bestellblock angelegt werden.
Hat hier jemand eine Lösung, wie man den bestehenden Code entsprechend umschreiben kann ohne Hilfsspalten verwenden zu müssen? Meine Idee war die gleichen Werte mittels Range zu definieren, aber mein Wissen über VBA reicht bei weitem nicht aus um das umzusetzen.
Danke für Eure Hilfe!
Sub XML_Export()
'** Excel-Inside Solutions - (C) 9.1.2015*
'** Dimensionierung der Variablen
Dim strFile As String, Text As String
Dim lngRow, lngCol As Long
Dim varShow
Dim lngLz As Long
'** Vorgaben definieren
Set wsakt = ActiveSheet
'** Errorhandling
On Error GoTo Fehlermeldung
'** XML-Dateipfad und -Name festlegen
strFile = ThisWorkbook.Path & "\cdiscount-orders.xml"
'** Datei (ASCII) öffnen
Open strFile For Output As #1
'** Ermittlung der letzten Zeile
lngLz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'** XML-Header schreiben
Print #1, " "
Print #1, ""
'** Mit Schleife die Spalten der Tabelle schreiben
For lngRow = 7 To lngLz
If wsakt.Cells(lngRow, 2).Value > 0 Then
'** Schreiben Datensatz-Beginn
Print #1, " " 'Tag Anfang"
'** Schreiben der Felder
Print #1, "" & Cells(lngRow, 2) & ""
Print #1, "" & Cells(lngRow, 3) & ""
Print #1, "" & Cells(lngRow, 1) & ""
    Print #1, ""
Print #1, "" & Cells(lngRow, 7) & ""
Print #1, "" & Cells(lngRow, 9) & ""
Print #1, "" & Cells(lngRow, 13) & ""
Print #1, "" & Cells(lngRow, 14) & ""
Print #1, ""
Print #1, ""
Print #1, "" & "Versand" & ""
Print #1, "" & Cells(lngRow, 15) & ""
Print #1, "" & 1 & ""
Print #1, ""
Print #1, ""
Print #1, "" & Cells(lngRow, 18) & ""
Print #1, "" & Cells(lngRow, 19) & ""
Print #1, "" & Cells(lngRow, 20) & ""
Print #1, "" & Cells(lngRow, 21) & ""
Print #1, "" & Cells(lngRow, 22) & ""
Print #1, "" & Cells(lngRow, 23) & ""
Print #1, "" & Cells(lngRow, 24) & ""
Print #1, ""
Print #1, ""
Print #1, "" & Cells(lngRow, 27) & ""
Print #1, "" & Cells(lngRow, 28) & ""
Print #1, "" & Cells(lngRow, 30) & ""
Print #1, "" & Cells(lngRow, 29) & ""
Print #1, "" & Cells(lngRow, 31) & ""
Print #1, ""
'** Schreiben Datensatz-Ende
Print #1, ""
End If
Next lngRow
'** Daten-Tag schließen
Print #1, ""
'** XML-Datei schließen
Close #1
'** Aufruf des Editors mit der geschriebenen xml-Datei
varShow = Shell(Environ("windir") & "\notepad.exe " & strFile, 1)
Exit Sub
'** Errorhandling
Fehlermeldung:
Close #1
MsgBox "Fehler-Nr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "Fehler"
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel zu XML per VBA, Zeilen in XML gruppieren
29.10.2017 16:52:43
Luschi
Hallo AmBall,
Da hast Du aber die Vorlage ganz schön zerrupft, denn Du meinst sicher diesen Link:

https://www.excel-inside.de/vba-loesungen/sonstiges/993-xml-datei-per-vba-erzeugen
Deine Ziel-Datei hat überhaupt nichts mit XML zu tun.
Außerdem habe ich Dein Ausgangsproblem nicht ganz verstanden; kannst Du daß mal an einer Exceldatei zeigen?
Gruß von Luschi
aus klein-Paris
AW: Excel zu XML per VBA, Zeilen in XML gruppieren
29.10.2017 18:55:07
AmBall
Hallo Luschi,
ja oder von hier: http://vba1.de/vba/096xml_export.php
Soweit funktioniert es ja und ich erhalte eine korrekte XML-Datei.
Die Excel Datei besteht aus Bestelldaten:
Jede Bestellung hat eine Zeile in der Excel Datei mit Order ID, Lieferadresse, Artikel usw.
Wenn mehrere Artikel vom selben Kunden geordert werden, steht jeder Artikel in der folgenden Zeile nochmal mit allen weiteren Daten, aber mit identischer Order ID. Das widerum wird mit dem jetzigen VBA Script wie eine eigenständige Bestellung ausgegeben, anstatt nur die Artikeldaten dem vorherigen Block in der XML anzufügen.
Hier die Excel Datei
https://www.herber.de/bbs/user/117289.xlsx
Und nochmal das gepostete VBA Script aber mit allen Spaltenbezeichnungen
https://www.herber.de/bbs/user/117290.txt
Anzeige
AW: Excel zu XML per VBA, Zeilen in XML gruppieren
29.10.2017 19:19:37
AmBall
Hier jetzt noch einmal das VBA Script und diesmal so, dass es auch mit der Excel-Datei wie beschrieben funktioniert.
https://www.herber.de/bbs/user/117291.txt
noch aktuell?
03.11.2017 12:09:25
Michael
Hi,
die Frage ist irgendwie versandet - interessiert noch eine Antwort?
Grüße,
M.
AW: noch aktuell?
04.11.2017 18:18:31
AmBall
Ich bin nun auf andere Art zum Ziel gekommen. Mit diesem Tool:
https://flowheater.net/de/dokumentation/designer
kann man aus CSV-Dateien per Drag and Drop eine XML in der gewünschten Form erstellen.

70 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige