Anzeige
Archiv - Navigation
1668to1672
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Web-Abfrage

VBA-Web-Abfrage
27.01.2019 12:47:36
Hirtenanna
Schönen guten Tag zusammen,
nach langer Suche möchte ich mich heute an Euch wenden, da mir leider die erforderliche Kenntnis im VBA-Bereich fehlt, ich allerdings erheblich an die Arbeitserleichterung des VBA-Makros gebunden bin. Ich hoffe das Ihr mir mit Eurem Fachwissen weiterhelfen könnt.
Zunächst hier das Makro, welches ich mir mit Hilfe von Videos zusammengestellt habe. Bitte nicht lachen, der ein oder andere wird hier vielleicht schon Handlungsbedarf beim optimieren finden:

Sub ebay()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = False
.navigate Range("Tabelle2!D2").Value
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Dim doc As HTMLDocument
Set doc = ie.document
While ie.readyState  4
Wend
On Error Resume Next
Dim i As Integer
For i = 0 To 500
Range("B11").Offset(i).Value = doc.getElementById("ResultSetItems").getElementsByTagName("h3")( _
i).innerText
Range("C11").Offset(i).Value = doc.getElementById("ResultSetItems").getElementsByClassName(" _
selrat")(i).innerText
Range("D11").Offset(i).Value = doc.getElementById("ResultSetItems").getElementsByClassName(" _
lvsubtitle")(i).innerText
Range("E11").Offset(i).Value = doc.getElementById("ResultSetItems").getElementsByClassName(" _
lvshipping")(i).innerText
Range("F11").Offset(i).Value = doc.getElementById("ResultSetItems").getElementsByClassName(" _
lvprice prc")(i).innerText
Next i
Application.EnableEvents = True
End With
End Sub

Das Makro funktioniert so erstmal einwandfrei und alles steht da, wo es stehen soll. Ich habe allerdings mehrere kleinere "Problemchen" bei denen ich Eure Hilfe aufgrund fehlender Sachkenntnis benötige.
1. Die Daten werden nicht aktualisiert. Führe ich das Makro aus, werden alte Daten eingefügt. Klicke ich allerdings auf den entsprechenden Link in Tabelle2 Zelle D2, öffnet sich die aktuellste Version der Seite.
2. In C11 habe ich versucht, den angezeigten Anbieter einfügen zu lassen. Diese Einstellung kann man im Browser vornehmen, so das dieser auch in der Listenansicht angezeigt wird. Die Bezeichnung "selrat" ist dabei aber offensichtlich falsch, weshalb auch nichts ausgegeben wird. Im HTML Text ist der Verkäufer allerdings eindeutig als "Verkäufer: ..." definiert. Hier bräuchte ich also den entsprechenden Befehl, den entsprechenden Namen auch exportieren zu können.
3. Zu viel Text: In F11 wird automatisch "EUR" übernommen, als auch Text wie "Preistendenz", welchen ich nicht brauche. Ist es hier möglich nur die reine Zahl ausgeben zu lassen?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Web-Abfrage
28.01.2019 10:15:32
Zwenn
Hallo Hirtenanna,
um Dir helfen zu können ist es unbedingt notwendig den Link zur Seite zu kennen, die Du auslesen willst oder mindestens den HTML-Quelltext als TXT-Datei zu bekommen. Zusätzlich solltest Du eine Beispielmappe hochladen, damit man sehen kann, was wo hin soll.
Habe eigentlich keine Zeit, aber würde mal einen Blick drauf werfen, wenn das nicht zu aufwändig ist.
Viele Grüße,
Zwenn
AW: VBA-Web-Abfrage
28.01.2019 18:03:55
Hirtenanna
Hallo Zwenn,
vielen Dank das Du zumindest mal drauf schauen möchtest, trotz des Zeitproblems!
https://www.herber.de/bbs/user/127219.xlsm
Hier eine Erklärung zu meinem Anliegen (das meiste müsste sich aber selbst erklären, wenn das Makro gestartet wird):
1. Es soll bitte bei jedem Makrostart auch nur die aktuellste Version der Seite abgerufen werden. Dies scheint nicht zu passieren, da einige male die Datei mit alten Daten gefüllt wurde. Leider kann ich nicht sagen, woher die alten Daten bezogen wurden.
2. In der Spalte B müsste der Name des Anbieters stehen, welcher sich mir im HTML Code allerdings nicht eindeutig offenbart, weshalb das Kauderwelsch dort auftaucht. Der Name des Anbieters wird nicht automatisch in der normalen Ansicht dargestellt, sondern erst bei Klick auf Ansicht (obere Leiste) und "Angabe zum Verkäufer".
3. Oft tauchen Informationen in den Zellen auf, welche ich nicht benötige. Im Upload-Beispiel zB der Preis pro kg. Um den Stückpreis zu ermitteln (Spalte G) habe ich kürzlich versucht mit einem "Suchen & Ersetzen" Makro unnötigen Text zu löschen, bzw zu ersetzen (Kostenlos = 0). Dies hat funktioniert, war aber eher aus der Not geboren, da mir die Fachkenntnis fehlt um zB im VBA-Makro kostenlos als 0 zu definieren. Vielleicht kennt hier jemand auch eine elegantere Lösung.
Hauptproblem stellt für mich die fehlende, klare Definition der Informationen dar, welche ich benötige.
Anzeige
AW: VBA-Web-Abfrage
28.01.2019 19:23:54
Zwenn
Hallo Hirtenanna,
mit Ebay hast Du eine Seite getroffen, mit der ich viel für die Arbeit zu tun habe. Die Suchliste habe ich allerdings bisher nicht ausgelesen. Sollte aber gehen.
Um an die Namen zu kommen, musst Du in der Kopfzeile rechts neben "Sortieren ..." das Symbol anklicken. Im Menü wählst Du 'Anpassen' aus und stellst im erscheinenden Dialog ein, was Du angezeigt haben willst. Das sind Einstellungen, die auf Deinem Rechner dann gesetzt bleiben. Ich nehme an in einem Coockie, weiß es aber nicht genau. Die Infos sollten also ab der Speicherung der Einstellungen bei jedem Aufruf automatisch gesetzt sein, damit man an die Daten kommt.
Ich habe im Moment leider sehr großen Termindruck für ein anderes Projekt, in dass ich auch meine Freizeit reinbuttere, damit es noch klappt. Wenn es klappt, wie es soll, bin ich damit noch diese Woche ausgelastet. Zu wann brauchst Du das Makro denn?
Abgehackte Anbieternamen, wie z.B. jde-world-of-coffe... statt jde-world-of-coffee, kann man aus anderen Tags holen habe ich schon gesehen. Den Rest muss ich mir dann in Ruhe anschauen.
Eine Alternative zu einem Makro ist ein Programm, dass direkt auf die Ebay API zugreift. Die erste Wahl hier ist ein Tool namens BayWotch. Damit kannst Du mit sehr wenig Aufwand alles auslesen, was Du brauchst. Also das Teil liest Angebote aus, mit allem was dazu gehört. Verkäufername, Preise, Artikelstandorte, usw, usw. Schau Dir das mal an. Wenn Du die Daten in Excel brauchst, kannst Du die benötigten Datenfelder aus BayWotch als CSV Datei exportieren und in Excel weiter verarbeiten.
Du kannst auch eine Testversion runterladen. Die Standardversion für 40€ hat ein paar Einschränkungen. Die Professional Version ist inzwischen mit Preis auf Anfrage. Die hat früher mal 100€ pro Lizenz gekostet. Wir haben davon mehrere in der Firma laufen und aktualisieren damit jede Nacht Angebote, die wir für unsere Projekte brauchen. Die Enterprise Version lag damals jenseits der 1.000€ Grenze. Aber die brauchst Du unter Garantie auf keinen Fall.
http://www.baywotch.de/
Viele Grüße,
Zwenn
Anzeige
AW: VBA-Web-Abfrage
28.01.2019 19:34:54
Zwenn
Aso,
falls Du es doch über ein Makro lösen willst, dann stell die Sortierung auf Neu eingestellt ein. Dann bekommst Du auch die aktuellen Angebote ganz oben angezeigt. Diese Einstellung ist in der URL verankert. Stell es also ein wie Du es brauchst und kopiere dann den neuen Link aus dem Browser in Deine Tabelle2, Zelle D1. Die Formel für den Hyperlink brauchst Du dafür nicht.
Viele Grüße,
Zwenn
AW: VBA-Web-Abfrage
29.01.2019 14:31:43
Hirtenanna
Hallo Zwenn,
vielen Dank für die ausführlichen Antworten!
"Um an die Namen zu kommen, musst Du in der Kopfzeile rechts neben "Sortieren ..." das Symbol anklicken."

Ja, wie der Verkäufername im Web-Suchergebnis angezeigt wird, habe ich schon heraus gefunden. Mein Problem ist nur, das ich diese Information nicht über das Makro extrahieren kann, da mir die entsprechende HTML-Definition fehlt. Bei den anderen Bezeichnungen hatte ich mehr Glück, auch wenn teilweise Infos mit ausgelesen werden, die ich nicht benötige.
"Zu wann brauchst Du das Makro denn?"
Das hat bei mir keinen großen Zeitdruck. Bislang habe ich die Infos ganz normal über die Webansicht bekommen. Ist eben nur einigermaßen aufwendig, da meine Internetverbindung nicht die allerbeste ist, und ich somit jede EAN einzeln eingeben muß. Um das ganze erheblich zu vereinfachen und zu standardisieren, hatte ich die Idee mit dem Makro, welches mir langfristig sehr viel Zeit sparen würde.

"Die erste Wahl hier ist ein Tool namens BayWotch."

Danke für den Hinweis! Bin ich bei meiner Suche glaube ich auch schon mal gestolpert, konnte ich aber zunächst nicht vertiefen. Ich habe mir das Programm gestern und heute etwas genauer angesehen und ich muß sagen, das es ziemlich genau das macht, was ich auch brauche. Unter dem Aspekt, für welches ich das Makro benötigen würde, kann ich das Programm allerdings leider nicht gebrauchen (es sei denn ich habe etwas übersehen): Das Programm ist toll darin, einen festen Artikelstamm zu überprüfen und die Suchergebnisse zu exportieren. Für mein Vorhaben ist dies allerdings unbrauchbar, da ich täglich zwischen 20 und 30 verschiedenen Artikeln prüfen muß. Die Artikel selbst sind dabei durch den EAN Code klar definiert, weshalb das Makro auch auf Tabelle2, Zelle D2 zugreift. In der Endfassung soll also in Tabelle2 B1 - B30 30 EAN Codes eingefügt werden, welche dann von dem Makro weiterverarbeitet werden. Baywotch bietet eine ähnliche Suche an, allerdings nur auf Basis von Ebay-Artikelnummern. Gebe ich eine einzelne EAN-Nummer in der normalen Suche an, erhalte ich auch die entsprechenden Ergebnisse. Dies funktioniert allerdings nicht mit mehreren EAN-Codes, wie ich es beabsichtige. Jede EAN einzeln einzufügen, exportieren und das dann mit 30 Artikeln ist dabei zu aufwendig. Aber vielleicht habe ich etwas übersehen, das diese Funktion doch mit mehreren Artikeln gleichzeitig möglich ist.
"Die Formel für den Hyperlink brauchst Du dafür nicht."
Leider doch, da es sich wie schon geschrieben um mehrere Suchen handelt und die Zellen in Tabelle2 B1 - B30 täglich neu befüllt werden.
Wie Du vielleicht nun gesehen hast, handelt es sich bei der hochgeladenen Datei um ein Grundgerüst, welches ich dann auf mehrere Artikel erweitern möchte, wenn es mit einem Artikel reibungslos funktioniert.
Anzeige
AW: VBA-Web-Abfrage
29.01.2019 15:52:25
Zwenn
Hallo Hirtenanna,
so ganz habe ich noch nicht verstanden, worauf Du am Ende hinaus möchtest. Wenn Du 30 EAN Nummern hast, dann ergibt das doch ziemlich viele Suchtreffer. Was willst Du mit den Treffern machen? So wie Du es im Moment machst, liest Du auch lediglich die erste Seite der Suchergebnisse aus. Reicht Dir das? Man kann zwar in den Grundeinstellungen vorsehen, dass statt 50 gleich 200 Suchergebnisse angezeigt werden, aber auch das ist für manche Suchen zu wenig, um die Ergebnisse auf einer Seite zu haben.
Du kannst natürlich mit einem Piloten arbeiten, den Du dann später umstrickst, damit es für mehrere EAN am Stück funktioniert. Es wäre aber weniger aufwändig, wenn Du Dir jetzt schon überlegst, wie Deine Tabelle(n) am Ende aussehen sollen.
Ich bin auch noch immer der Meinung, Du brauchst die Hyperlink-Formel nicht. Du brauchst wahrschenlich nicht einmal den Link in der Tabelle, sondern nur die EANs. Die URL baut man dann im Makro genau so zusammen, wie man sie grade braucht. So mache ich es jedenfalls bisher immer.
Vielleicht kannst Du nochmal genauer erklären, was hinter dem Projekt steht. Brauchst Du 'nur' die Preise zu den EANs, willst Du rausfinden, was sich hinter den EANs für Produkte verbergen oder was ist das Ziel? Brauchst Du das denn nur für Ebay?
In BayWotch kann man beliebig viele Suchen speichern und als Batch abarbeiten. Wenn Du jeden Tag 20 bis 30 andere EANs hast gebe ich Dir aber recht. Das ist dann nicht so toll. Da könnte man höchstens versuchen mit dem Oder-Operator für einen Suchterm zu erbeiten. Ich weiß aber grade nicht, wie lang ein Suchterm sein darf.
Viele Grüße,
Zwenn
Anzeige
AW: VBA-Web-Abfrage
29.01.2019 17:03:39
Hirtenanna
Hallo Zwenn,
vielen Dank für Deine Antwort! Versuche das etwas zu präzisieren:
"Wenn Du 30 EAN Nummern hast, dann ergibt das doch ziemlich viele Suchtreffer. Was willst Du mit den Treffern machen? So wie Du es im Moment machst, liest Du auch lediglich die erste Seite der Suchergebnisse aus. Reicht Dir das? Man kann zwar in den Grundeinstellungen vorsehen, dass statt 50 gleich 200 Suchergebnisse angezeigt werden, aber auch das ist für manche Suchen zu wenig, um die Ergebnisse auf einer Seite zu haben."
Eigentlich gibt es nicht so viele relevante Treffer im Suchergebnis. Die Suche ist durch den spezifischen Link stark eingeschränkt, in meinem Fall nur neue Artikel, keine Auktionen nur Sofortkauf etc. Sicher hätte man sehr umfangreiche Suchen, wenn man nach Begriffen suchen würde, allerdings erhält die Suche ihre hauptsächliche Präzisierung durch die Angabe der EAN, welches für jedes Produkt einzigartig ist. Mir reicht hier die erste Seite der Suche. Wenn man das Suchergebnis auf 200 stellen würde, würde man erfahrungsgemäß in den seltensten Fällen auch 200 oder mehr Ergebnisse erhalten.
"Du kannst natürlich mit einem Piloten arbeiten, den Du dann später umstrickst, damit es für mehrere EAN am Stück funktioniert. Es wäre aber weniger aufwändig, wenn Du Dir jetzt schon überlegst, wie Deine Tabelle(n) am Ende aussehen sollen."
Das hatte ich so anders gedacht. Mir ist durchaus bewusst, das hier Menschen unterwegs sind, welche ihr täglich Brot mit solchen Aufabenstellungen verdienen und ich fänd es einigermaßen unverschämt, wenn ich von jemandem ein komplettes Projekt erwarte, welches ich dann im Nachgang nur mit einem Dankeschön honorieren könnte. Daher der Ansatz eines Grundgerüsts, welches ich mir später umbastle. Der Gedanke dahinter war, nicht zu viel Zeit von jemandem dafür zu beanspruchen. Ich kam mit meinen Recherchen und Grundkenntnissen nach tagelanger Suche leider nicht weiter.
"Ich bin auch noch immer der Meinung, Du brauchst die Hyperlink-Formel nicht. Du brauchst wahrschenlich nicht einmal den Link in der Tabelle, sondern nur die EANs. Die URL baut man dann im Makro genau so zusammen, wie man sie grade braucht. So mache ich es jedenfalls bisher immer."
Wenn sich dies realisieren lässt, ist das für mich vollkommen in Ordnung. Mir geht es "nur" um die Möglichkeit max. 30 EAN-Codes einzufügen, welche dann zur Makro-Abfrage dienen.
"Brauchst Du 'nur' die Preise zu den EANs, willst Du rausfinden, was sich hinter den EANs für Produkte verbergen oder was ist das Ziel? Brauchst Du das denn nur für Ebay?"
Ich benötige die Angaben, welche in der Tabelle aufgezeigt werden: Artikelbezeichnung, Anbietername, Zustand (hier gibt es über die klar definierte Suchanfrage 2 relevante Zustände, nämlich "Neu (sonstige)" und "Brandneu"), Versandkosten, Preis. "Stückpreis" lässt sich ohne weiteres in der Excel Tabelle anhand von Stückpreis + Versandkosten errechnen. Quelle der Suchanfragen ist ausschließlich Ebay. Das Makro in der Datei arbeitet eine EAN ab, die Endversion sollte aber maximal 30 EAN-Codes abarbeiten. Als Ergebnis steht dann der EAN-Code über der gerahmten Tabelle. In der Endversion sollte die Tabelle dann 30x nebeinander bzw. untereinander gefüllt sein, mit den entsprechenden Suchergebnissen aus 30 Suchen.
Wie schon gesagt, BayWotch ist ein tolles Programm und ich würde das auch sehr gerne nutzen, da es genau das macht, was ich benötige. Nur eben nicht auf Basis der Tatsache, das man täglich wechselnde Artikel hat. Besonders hat mir gefallen, das man die Artikel just in time abfragen kann und exportieren kann, da mit dem Makro nach wie vor die Problematik besteht, das auf alte Daten zugegriffen wird, von denen ich nicht weiß woher sie bezogen werden.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige