Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 1379 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 ..
Neuester Wissensbeitrag
Windows 10

Sticky Notes - Autostart unterbinden

Tipp von Pedant zum Thema Windows 10 ...

Ähnliche Inhalte
PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

Microsoft Office
gelöst Aus Outlook 2013 Daten aus Tabellenfeldern in Excel übertragen (9)

Frage von ich2110 zum Thema Microsoft Office ...

XML
XML Datei Fehler? (1)

Frage von Patrick-IT zum Thema XML ...

Heiß diskutierte Inhalte
Flatrates
DeutschlandLAN der Telekom - welche internen IPs? (19)

Frage von qualidat zum Thema Flatrates ...

LAN, WAN, Wireless
Wie Gäste ins Internet bringen? (15)

Frage von xSiggix zum Thema LAN, WAN, Wireless ...

Linux
gelöst Schmaler Scrollbalken in Python-Anwendung (14)

Frage von indi955 zum Thema Linux ...