Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1644to1648
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

Daten aus XML-Datei direkt einlesen

Daten aus XML-Datei direkt einlesen
21.09.2018 22:46:46
Martin
Hallo Forum,
ich hab bereits einbisschen Erfahrungen mit VBA machen können, aber hauptsächlich in öffnen, entpacken, einfügen von Formeln, und neu speichern von Dateien. Aber hier komme ich nun leider nicht mehr weiter.
Ich möchte aus mehreren XML Dateien für eine private Auswertung verschiedene Daten auslesen direkt aus der XML. Jedoch bekomme ich es nicht hin das die Folgend die XML welche ich habe:
---------------------------------



Winter




....
....
....
....
....

----------------------------
Hier der VBA Code welchen ich bereits angefangen hab anzupassen ( -----------------------------

Sub readXML()
Dim vntFiles As Variant, vntValues() As Variant
Dim lngIndex As Long, lngC As Long
Dim ff As Integer
Dim strTmp As String
'Datei(en) wählen - Mehrfachselektion möglich
vntFiles = Application.GetOpenFilename("XML Dateien (*.xml),*.xml", MultiSelect:=True)
'wennDateien gewählt
If IsArray(vntFiles) Then
'Ausgabearray dimensionieren
ReDim vntValues(1 To UBound(vntFiles) + 1, 1 To 6000)
vntValues(1, 1) = "File"
'Dateien durchlaufen
For lngIndex = LBound(vntFiles) To UBound(vntFiles)
'Dateiname
vntValues(lngIndex + 1, 1) = Mid(vntFiles(lngIndex), InStrRev(vntFiles(lngIndex), "\") +   _
_
_
_
_
_
_
1)
ff = FreeFile
lngC = 1
'xml-Datei öffnen
Open vntFiles(lngIndex) For Input As #ff
'Zeilen durchlaufen
Do While Not EOF(ff)
'zeile lesen
Line Input #ff, strTmp
strTmp = Trim$(strTmp)
'Zeile auf Zeichenfolge prüfen
If LCase(strTmp) Like "") Then
'in Array schreiben
If lngIndex = 1 Then vntValues(lngIndex, lngC) = Split(strTmp, """")(0)
vntValues(lngIndex + 1, lngC) = Replace(Split(strTmp, """>")(1), ",", ".")
End If
End If
Loop
Close #ff
Next
End If
'Ausgabe
With Range("A1").Resize(UBound(vntValues, 1), UBound(vntValues, 2))
.Value = vntValues
.NumberFormat = "0.00"
.Columns.AutoFit
End With
End Sub

----------------------
Ich glaube das in dem folgenden Teil irgendwo eine Anpassung fehlt damit es auch funktioniert:
'String aufteilen
strTmp = Mid(strTmp, 34)
strTmp = Left(strTmp, Len(strTmp) - 19)
'nochmal prüfen
If InStr(1, strTmp, ">") Then
'in Array schreiben
If lngIndex = 1 Then vntValues(lngIndex, lngC) = Split(strTmp, """")(0)
vntValues(lngIndex + 1, lngC) = Replace(Split(strTmp, """>")(1), ",", ".")
Jedoch weiss ich nicht was ich hier entsprechend noch anpassen muss damit es funktioniert oder wie der Code auszusehen hat. Kann mir hier jemand weiterhelfen?
Danke im vorraus & viele Grüsse,
Martin

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus XML-Datei direkt einlesen
21.09.2018 22:50:54
Martin
Nachtrag: Hier ist die XML Datei, da sie im Beitrag nicht angezeigt wird:
https://www.herber.de/bbs/user/124145.zip
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige