Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Frage Entwicklung

Mitglied: LocXar

LocXar (Level 1) - Jetzt verbinden

14.10.2014, aktualisiert 15.10.2014, 1423 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 (10)

Frage von kaiuwe28 zum Thema VB for Applications ...

XML
gelöst Vbs - simple XML Datei auslesen (4)

Frage von DeeJayBee zum Thema XML ...

VB for Applications
Excel: Makro soll mehrer Dateien auslesen und in einer neuen Datei zusammenfassen (12)

Frage von Michelle1995 zum Thema VB for Applications ...

XML
gelöst Xml-Datei in eine csv-Datei umwandeln mit Powershell (5)

Frage von jan.kleinel zum Thema XML ...

Neue Wissensbeiträge
Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (31)

Frage von McLion zum Thema Router & Routing ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail (24)

Frage von ahstax zum Thema Visual Studio ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Windows Netzwerk
Netzwerk Neustrukturierung (15)

Frage von IT-Dreamer zum Thema Windows Netzwerk ...