Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Aus einer XML-Datei mehrere Daten auslesen und in einer bestimmten Syntax in eine Excel-Datei speichern

Mitglied: LocXar

LocXar (Level 1) - Jetzt verbinden

14.10.2014, aktualisiert 15.10.2014, 1457 Aufrufe, 2 Kommentare, 1 Danke

Guten Tag,

ich habe hier eine xml datei (ausschnitt am ende meines Posts) in der Daten aus einer Datenbank gespeichert werden. unter CUSTS > CUST > BILLING_ADDRESS sind 2 Tags die ich brauche, NAME1 und PHONE1 die müsste ich auslesen und in eine excel Tabelle einfügen, wo sie dann NUR in der ersten Spalte gespeichert werden sollen. Die erste Zeile bleibt frei und danach bekommt jedes NAME1/PHONE1 Paar eine Zeile die so aufgebaut sein muss:
01.
NAME1,,,"PHONE1","NAME1"
aus der Telefonnummer der XML Datei muss auch noch das / entfernt werden.

01.
<!DOCTYPE CUSTS SYSTEM "Customer.dtd" []> 
02.
<CUSTS> 
03.
	<CUST> 
04.
		<CUSTID></CUSTID> 
05.
		<DESC></DESC> 
06.
		<CURR></CURR> 
07.
		<TAX></TAX> 
08.
		<EUVAT/> 
09.
		<A1TAXATION></A1TAXATION> 
10.
		<PLACEOFUNLOADING/> 
11.
		<PLANTKEY/> 
12.
		<PAYTERMS></PAYTERMS> 
13.
		<PAYMODE/> 
14.
		<PAYDAYS></PAYDAYS> 
15.
		<CASHDISCDAY1></CASHDISCDAY1> 
16.
		<CASHDISCDAY2></CASHDISCDAY2> 
17.
		<CASHDISCPER1></CASHDISCPER1> 
18.
		<CASHDISCPER2></CASHDISCPER2> 
19.
		<PAYBEHAV/> 
20.
		<LOCKED></LOCKED> 
21.
		<DISC></DISC> 
22.
		<SALESAGENT></SALESAGENT> 
23.
		<PRICELIST></PRICELIST> 
24.
		<DISCLIST></DISCLIST> 
25.
		<PROCEEDCODE></PROCEEDCODE> 
26.
		<ISCOMMISSION></ISCOMMISSION> 
27.
		<PRICEFLAG></PRICEFLAG> 
28.
		<DISCGROUP/> 
29.
		<REFERENZ/> 
30.
		<REFERENZNR/> 
31.
		<HOMEPAGE/> 
32.
		<LETTERADDRESS/> 
33.
		<LANGUAGE></LANGUAGE> 
34.
		<ADDRESSAWKZ/> 
35.
		<KTOAWKZ/> 
36.
		<ADDRESSGROUP></ADDRESSGROUP> 
37.
		<KTOGROUP/> 
38.
		<CONTACT></CONTACT> 
39.
		<MEMOKTO/> 
40.
		<FORMULAR/> 
41.
		<KTOTYP/> 
42.
		<KOSTENSTELLE/> 
43.
		<KOSTENTRAEGER/> 
44.
		<TRANSPORTMODE/> 
45.
		<BUSINESSTYPE/> 
46.
		<TOUR></TOUR> 
47.
		<SHIPMENTTYPE/> 
48.
		<DELIVERYCOND/> 
49.
		<PARTDELIVERY></PARTDELIVERY> 
50.
		<BILLING_ADDRESS> 
51.
			<ADDRESS/> 
52.
			<NAME1>Name</NAME1> 
53.
			<NAME2></NAME2> 
54.
			<NAME3/> 
55.
			<STREET/> 
56.
			<ZIP/> 
57.
			<CITY/> 
58.
			<COUNTRY/> 
59.
			<PHONE1>0123/456789</PHONE1> 
60.
			<PHONE2/> 
61.
			<FAX>0123/4567890</FAX> 
62.
			<EMAIL/> 
63.
		</BILLING_ADDRESS> 
64.
		<SHIPPING_ADDRESS> 
65.
			<ADDRESS/> 
66.
			<NAME1></NAME1> 
67.
			<NAME2></NAME2> 
68.
			<NAME3/> 
69.
			<STREET></STREET> 
70.
			<ZIP></ZIP> 
71.
			<CITY></CITY> 
72.
			<COUNTRY></COUNTRY> 
73.
			<PHONE1></PHONE1> 
74.
			<PHONE2/> 
75.
			<FAX></FAX> 
76.
			<EMAIL/> 
77.
		</SHIPPING_ADDRESS> 
78.
		<PERSONTOTURNTO> 
79.
			<PERSON2TURN2></PERSON2TURN2> 
80.
			<GROUP/> 
81.
			<TITLE/> 
82.
			<PNAME1/> 
83.
			<PNAME2/> 
84.
			<POSITION></POSITION> 
85.
			<DIVISION/> 
86.
			<LETTERADDRESS1/> 
87.
			<LETTERADDRESS2></LETTERADDRESS2> 
88.
			<LETTERADDRESS3></LETTERADDRESS3> 
89.
			<PPHONE/> 
90.
			<PFAX/> 
91.
			<PMOBIL/> 
92.
			<PHONEPRIVAT/> 
93.
			<PHONECAR/> 
94.
			<PEMAIL/> 
95.
			<BIRTHDAY/> 
96.
			<PMEMO/> 
97.
		</PERSONTOTURNTO> 
98.
	</CUST> 
99.
	<CUST> 
100.
...
Dieses Muster wiederholt sich unbestimmt oft!
Ich hoffe das mir jemand bei meinem Problem helfen kann und bedanke mich schonmal im vorraus für die Hilfe!

Mit freundlichen Grüßen
LocXar
Mitglied: colinardo
LÖSUNG 14.10.2014, aktualisiert 15.10.2014
Hallo LocXar,
kannst du mit folgendem Code in einem Excel-Dokument machen (In Zeile 4 den Pfad zu XML-Datei eingeben):
01.
Sub ImportXMLData() 
02.
    Dim ws As Worksheet, rngOut As Range, fso as Object, xmldoc as Object, strContent as Variant 
03.
    'Pfad zur XML-Datei 
04.
    Const XMLPATH = "C:\temp\customers.xml" 
05.
     
06.
    'Objekte erstellen 
07.
    Set fso = CreateObject("Scripting.Filesystemobject") 
08.
    Set xmldoc = CreateObject("msxml2.domdocument.6.0") 
09.
 
10.
    'Anfangszelle des Ausgabebereichs bestimmen Tabellenblatt 1 Zelle A2 
11.
    Set rngOut = Sheets(1).Range("A2") 
12.
 
13.
    'XML-Datei einlesen und die erste Zeile 'wegsplitten' damit das Dokument vom XML-Object korrekt interpretiert werden kann (Die DTD stört in diesem Fall in der Definition) 
14.
    strContent = Split(fso.OpenTextFile(XMLPATH).ReadAll(), vbNewLine, 2) 
15.
    xmldoc.validateOnParse = False 
16.
    xmldoc.LoadXML (strContent(1)) 
17.
 
18.
    'gewünschte Nodes mit XPATH selektieren 
19.
    Set Nodes = xmldoc.SelectNodes("/CUSTS/CUST/BILLING_ADDRESS") 
20.
 
21.
    'für jeden gefundenen Knoten ... 
22.
    For Each Node In Nodes 
23.
        'Werte der gewünschten Elemente holen 
24.
        strNAME1 = Node.SelectSingleNode("NAME1").Text 
25.
        'Slashes in der Telefonnummer ersetzen 
26.
        strPHONE1 = Replace(Node.SelectSingleNode("PHONE1").Text, "/", "", 1, -1, vbTextCompare) 
27.
 
28.
        'Werte in die Ausgabezeile schreiben 
29.
        rngOut.Value = strNAME1 & ",,,""" & strPHONE1 & """,""" & strNAME1 & """" 
30.
 
31.
        'Zeile um eins nach unten verschieben 
32.
        Set rngOut = rngOut.Offset(1, 0) 
33.
    Next 
34.
 
35.
    'Objekte releasen 
36.
    Set xmldoc = Nothing 
37.
    Set fso = Nothing 
38.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: LocXar
15.10.2014, aktualisiert um 08:56 Uhr
danke ich werde es gleich mal ausprobieren!


EDIT: Danke! Das Skript funktioniert super! Und danke für die beschriftungen der einzelnen Vorgänge!

MfG
LocXar
Bitte warten ..
Ähnliche Inhalte
VB for Applications
XML Datei auslesen mit Excel
Frage von kaiuwe28VB for Applications10 Kommentare

Hallo zusammen, ich mal wieder Leider komme ich nicht weiter. Ich möchte aus einem Ordner mit mehreren XML Dateien ...

Batch & Shell

Aus mehreren Excel-Dateien Daten auslesen und in eine Excel Datei einfügen - Batch

gelöst Frage von LegolegolasBatch & Shell7 Kommentare

Nachdem mir hier schon einmal geholfen wurde, möchte ich erneut um Eure Hilfe für einen Batch bieten. Folgendes Szenario: ...

Microsoft Office

Excel: Bestimmte Infos aus mehreren csv Dateien auslesen und in einer Excel Datei zusammenführen

gelöst Frage von simsMicrosoft Office5 Kommentare

Hallo Leute, ich bräuchte mal wieder eure hilfe in Sachen EXCEL - ich hoffe ihr könnt mir weiterhelfen, das ...

VB for Applications

Bestimmte Daten aus mehreren Txt-Dateien auslesen und in excel sortiert in spalten einfügen

gelöst Frage von VBANeuling2015VB for Applications14 Kommentare

Hallo zusammen, leider habe ich keine Ahnung von VBA. Habe dennoch schon einige Foren durchsucht und leider keinen Erfolg ...

Neue Wissensbeiträge
Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 StundenHumor (lol)1 Kommentar

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 14 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 15 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 18 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server40 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...