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, 1404 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
PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

XML
gelöst XML Datei per Skript ändern (12)

Frage von chrisen zum Thema XML ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
CNC Maschinen verlieren Netzwerkverbindung (kurioser Fehler) (21)

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

Webentwicklung
Aktuellen Mitarbeiter auf Homepage anzeigen (12)

Frage von alemanne21 zum Thema Webentwicklung ...