Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

xml-to-excel-via-url
#1
Hola!

Ich habe eine Liste mit eindeutigen urls (Spalte A, Tabelle1) die jeweils eine xml abfrage beinhalten.

Ich würde gerne über eine automatisierte Abfrage aus jeder dieser xml dateien immer dieselben 3 werte (WERT1, WERT2, WERT3 s.u.) in excel importieren, aber immer nur die ersten zehn 3er-pärchen (Es gibt immer mehr wie 10 pärchen pro link bzw. xml file)

Jeder xml file ist geich aufgebaut:


Code:
<response version="2">
<query></query>
<location></location>
<totalresults></totalresults>
<start></start>
<end></end>
<results><result>
<jobkey>WERT1</jobkey>
<jobtitle>WERT2</jobtitle>
<company></company>
<city></city>
<state></state>
<country></country>
<formattedLocation></formattedLocation>
<source></source>
<date></date>
<snippet></snippet>
<url>WERT3</url>
<onmousedown></onmousedown>
<logo></logo>
</result><result>
<jobkey>WERT1</jobkey>
<jobtitle>WERT2</jobtitle>
<company></company>
<city></city>
<state></state>
<country></country>
<formattedLocation></formattedLocation>
<source></source>
<date></date>
<snippet></snippet>
<url>WERT3</url>
<onmousedown></onmousedown>
<logo></logo>
</result><result>

usw.

</results>
</response>

Ich brauche nur die drei Werte:

Code:
<jobkey>WERT1</jobkey>
<jobtitle>WERT2</jobtitle>
<url>WERT3</url>


Ein mögliches Ergebnis wäre dann:

Tabelle2

Spalte A1-A10 = die abgefragte url1
Spalte B1-B10 = dazu passend WERT1
Spalte C1-C10 = dazu passend WERT2
Spalte D1-D10 = dazu passend WERT3

Spalte A11-A20 = die abgefragte url2
Spalte B11-B20 = dazu passend WERT1
Spalte C11-C20 = dazu passend WERT2
Spalte D11-D20 = dazu passend WERT3
usw.

Herzlichen Dank
Antworten Top
#2
Hallöchen,

wie holst Du die Daten bisher rein? Mit PowerQuery?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hi André!

Bisher hole ich die Daten noch gar nicht.

P.S. Wenn ich das richtig verstehe, würde Power Query bei meinem 2007 auch gar nicht laufen.
Antworten Top
#4
Du kannst in ein separatem Arbeitsblatt für jeden Link ein Web Querytable erstellen.
Nach 'refresh' sind alle neue Daten da.
Dann kannst du mittels Formel oder VBA die 10 erste Werten in ein anderes Arbeitsblatt kopiieren.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#5
Danke für den Vorschlag.

Aber es sind stellenweise mehrere hundert Links und die wechseln auch noch ab und zu.
Antworten Top
#6
Hallo Peter,

lade mal bitte eine Beispiel-XML-Datei hoch.

Viele Grüße,

Zwenn
Antworten Top
#7
Das änderst nichts an meinem Vorschlag.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#8
Wenn ich das richtig verstehe muss ich (später) jedes Arbeitsblatt EINZELN aktualisieren oder gibt es da noch eine andere Lösung?

Ich habe jetzt manuell mehrere xml untereinander in ein Arbeitsblatt importiert. Wenn ich das Arbeitsblatt aktualisiere, wird nur die LETZTE xml datei aktualisiert. Gibt es eine Lösung wo ALLE importierten xml dateien aktualisiert werden?
Antworten Top
#9
Es gibt nur 1 Arbeitsblatt, das sehr viele Querytables enthalten kann.ThisWorkbook.Refreshall aktualisiert alle Querytables in one go .Insgesamt brauchst du nur 2 Arbeitsblätter.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#10
Hallo Peter,

Du kannst auch über das DOM gehen (Document Object Model). Ich habe jetzt nur Dein einkopiertes Beispiel-XML aus Deinem ersten Post verwendet. Die Schleife um Deine URLs, was wo hinkopiert werden soll und die Begrenzung auf max. 10 Werte pro Datei musst Du noch einbauen. Ich würde die Sub aus einer anderen aufrufen und url, aktuelleZeile und aktuelleSpalteEins als Parameter übergeben.


Code:
Sub XMLEinlesen()

'Variablen für den Internetzugriff und das DOM-Handling
Dim url As String
Dim xmlDocument As Object
Dim knotenResult As Object
Dim knotenResultEinzel As Object
Dim knotenJobkey As Object
Dim knotenJobtitle As Object
Dim knotenURL As Object
Dim aktuelleZeile As Long
Dim aktuelleSpalteEins As Integer

 aktuelleZeile = 2
 aktuelleSpalteEins = 1
 url = "G:\Rest\Herber Forum\XML aus Web einlesen\xmlBeispiel.xml"
 
 'XML-Dokument instanzieren und XML-Dokument einlesen
 Set xmlDocument = CreateObject("MSXML2.DOMDocument")
 xmlDocument.Load url
 
 'Resul-Tags einsammeln
 Set knotenResult = xmlDocument.getElementsByTagName("result")
 
 If Not knotenResult Is Nothing Then
   'Wenn vorhanden alle Result-Tags durchgehen
   For Each knotenResultEinzel In knotenResult
     'Gewünschte Werte holen
     Set knotenJobkey = knotenResultEinzel.getElementsByTagName("jobkey")(0)
     Set knotenJobtitle = knotenResultEinzel.getElementsByTagName("jobtitle")(0)
     Set knotenURL = knotenResultEinzel.getElementsByTagName("url")(0)
     
     'Gewünschte Werte in die Tabelle eintragen, aus der das Makro gestartet wurde
     '(feste Tabelle kann natürlich vorangestellt werden)
     Cells(aktuelleZeile, aktuelleSpalteEins).Value = knotenJobkey.Text
     Cells(aktuelleZeile, aktuelleSpalteEins + 1).Value = knotenJobtitle.Text
     Cells(aktuelleZeile, aktuelleSpalteEins + 2).Value = knotenURL.Text
     
     'Nächste Zeile zum beschreiben festlegen
     aktuelleZeile = aktuelleZeile + 1
   Next knotenResultEinzel
 End If
End Sub


Viele Grüße,

Zwenn
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste