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, 1365 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!

Mit freundlichen Grüßen
LocXar
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

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

Frage von Akrosh zum Thema PHP ...

Entwicklung
gelöst CRV-Datei auslesen und in Excel konvertieren? (15)

Frage von Lisa110 zum Thema Entwicklung ...

Microsoft Office
Aus Outlook 2013 Daten aus Tabellenfeldern in Excel übertragen (7)

Frage von ich2110 zum Thema Microsoft Office ...

XML
XML Datei Fehler? (1)

Frage von Patrick-IT zum Thema XML ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...