Anzeige
Archiv - Navigation
1892to1896
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

XML und Ini datein in Excel auslesen

XML und Ini datein in Excel auslesen
11.08.2022 08:05:31
sven
Hallo zusammen,
ich stehe vor einem Problem und hoffe dass ihr mir helfen könnt.
Ich bin ein absoluter Neuling.
Ich möchte aus verschiedenen xml Konfigurationsdateien Parameter auslesen und in Excel speichern.
Dazu wolte ich ein Button anlegen der es ermöglich die relevante xml Datei auszuwählen und dann die Daten zu importieren.
Ich habe versuch mir das übers internet zusammenzusuchen, aber bin bisher gescheitert.
Wohlbemerkt VBA ist für mich noch ein Buch mit 8 Siegeln.

Dazu habe ich folgendes erstellt

Sub Start()
Dim xml As MSXML2.DOMDocument60
Dim xmlnode As MSXML2.IXMLDOMNode
Dim strWurzel As String
Dim intCounter As Integer, intCounter2 As Integer
If Dir(ActiveWorkbook.Path & "\" & Tabelle1.Range("XML_File_Name").Value) = "" Then
MsgBox "Die XML-Datei ist nicht vorhanden , bitte in den Ordner kopieren!", vbCritical, "Achtung .. . """
Exit Sub
Else
Set xml = New MSXML2.DOMDocument60
xml.Load ActiveWorkbook.Path & "\" & Tabellel.Range("XML_File_Name").Value
' Anzeige Wurzelelemente '
Set xmlnode = xml.DocumentElement1 = xml.DocumentElement.Chi1dNodes.Length
For intCounter = 0 To xml.DocumentElement.Chi1dNodes.Length - 1
Debug.Print xml.Knoten.ChildNodes(intCounter).nodeName & vbCr & xmlnode.ChildNodes(intCounter).Text
Next
intCounter = 0
' Zugriff auf Attribute falls vorhanden '
For intCounter = 0 To xml.DocumentElement.Chi1dNodes.Length(intCounter) - 1
Set xmlKD = xml.DocumentElement.Chi1dNodes.Length(intCounter)
For intCounter2 = O To xmlKD.Attributes.Length - 1
Tabellel.Range("B4").Offset(intCounter2, 0).Value = xml.DocumentElement.Chi1dNodes.Length(intCounter).nodeName
Tabellel.Range("B4").Offset(intCounter2, l).Value = xml.DocumentElement.Chi1dNodes.Length(intCounter).Attributes(intCounter2).nodeName
Tabellel.Range("B4").Offset(intCounter2, 2).Value = xml.DocumentElement.Chi1dNodes.Length(intCounter).Attributes(intCounter2).Text
MsgBox xml.DocumentElement. _
Chi1dNodes.Length(intCounter).nodeName _
& " hat Attribut: " & vbCr & _
xml.DocumentElement.ChildNodes(intCounter). _
Attributes(intCounter2).nodeName & " / " & _
xml.DocumentElement.Chi1dNodes.Length(intCounter). _
Attributes(intCounter2).Text
Next intCounter2
Next intCounter
End If
End Sub
_________________________________________________
Die Excel ist aufgebaut
mit Nodename,Element und Attribute also sollte wie folgt das so aussehen
Nodename Element Attribute
DocumentTitles UseAttribute False
die xmls ist folgendermaßen aufgebaut.
es gibt innerhalb der xml verschiedene sections und darunter dann die Werte.

UseAttribute="false"
ChangeTitleOnReplace="true"
ChangeFilenameOnReplace="true" />
oder

name="ActiveDirectorySupport">true
name="Domains">xyz
name="SingleSignOn">false
name="MultiTenancy">false
name="DisableUserManagementLocking">true

Im Rahmen von Problemsuche habe ich dann gedacht vielleicht liegt es an der Sprache daher sind die Begriffe leider gemischet (English/Deutsch).
hat auch nicht geholfen
Dazu hätte ich noch Fragen.
1. Kann ich mehrere Excel Seiten/Tabs haben, indie ich unterschiedliche XMLs einlesen kann
2. Ich würde auch gerne ini dateien auslesen. wie bekomme ich das hin. eine ini Datei würde von Aufbau so aussehen.
[DocumentTypeCheck]
Enabled = true

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: XML und Ini datein in Excel auslesen
11.08.2022 08:31:19
volti
Hallo Sven,
das Auslesen aus der Inidatei kannst Du so machen:
Code:


Private Declare PtrSafe Function GetPrivateProfileStringA Lib "kernel32" ( _ ByVal lpApplicationName As String, ByVal lpKeyName As Any, _ ByVal lpDefault As String, ByVal lpReturnedString As String, _ ByVal nSize As Long, ByVal lpFileName As String) As Long Sub EnviTest1() ' Mit Inidatei in Temp-Verzeichnis Dim sPfad As String * 255, Inidatei As String Inidatei = Environ("TEMP") & "\MyInidatei.ini" GetPrivateProfileStringA "MeinBereich", "Pfad", "", sPfad, 255, Inidatei MsgBox Left$(sPfad, InStr(sPfad, vbNullChar) - 1) End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige

64 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige