Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1524to1528
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

Suche einer Website per VBA nutzen

Suche einer Website per VBA nutzen
15.11.2016 00:20:58
Maik
Hallo liebe Community,
ich würde mit gern folgendes Makro schreiben, aber habe leider keinen Lösungsansatz gefunden und hoffe, dass Ihr mir weiterhelfen könnt.
Das Makro soll folgendes machen:
1. In einer Spalte einer schon bestehenden Exceltabelle habe ich lauter Namen stehen, nach denen auf einer bestimmten Website per Suchfunktion gesucht werden soll.
2. Dieser Wert soll also aus der Liste kopiert werden, in der Suche der Website eingegeben und aufgerufen werden.
3. Von der nun aufgerufenen Website möchte ich nur einen bestimmten Teil der (so erzeugten) URL haben und als Antwort in der Spalte (rechts vom gesuchten Namen) speichern.
Meine VBA-Kenntnisse sind recht überschaubar, aber verstehe die generelle vorgehensweise durch andere Programmiersprachen einigermaßen gut.
Schon mal vielen Dank für Eure Mühe,
Maik

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche einer Website per VBA nutzen
15.11.2016 00:47:52
Martin
Hallo Maik,
versetze dich mal in unsere Lage. Was sollen wir mit einer solchen Erklärung anfangen?:
In einer Spalte einer schon bestehenden Exceltabelle habe ich lauter Namen stehen, nach denen auf einer bestimmten Website per Suchfunktion gesucht werden soll. [...] Von der nun aufgerufenen Website möchte ich nur einen bestimmten Teil der (so erzeugten) URL haben und als Antwort in der Spalte (rechts vom gesuchten Namen) speichern.
Jetzt wissen wir genau den Namen der "bestehenden Exceltabelle", in "welcher Spalte" die Namen stehen und auf welcher bestimmten Website welches Suchfeld angesprochen werden muss. Ebenso wissen wir genau welcher bestimmte Teil von dem dir so exakt beschriebenen Aufbau der "so erzeugten URL" extrahiert werden soll. Sorry, aber bei der Beschreibung kann dir hier keiner behilflich sein.
Viele Grüße
Martin
Anzeige
AW: Suche einer Website per VBA nutzen
15.11.2016 02:52:16
Maik
Hallo Martin, danke für deine Antwort. Ich habe gehofft, dass die allgemeine Beschreibung ausreicht, da ich die Vorgehensweise für mehrere Websiten nutzen möchte. Ich beschreibe es mal ganz konkret an einem Beispiel:
1) Ich habe in der Spalte A untereinander eine Menge Wertpapierkennnummern stehen, z.b. in der Zelle A2 die Nr. "DE000PAH0038" der Porsche Automobil Holding SE.
2) Diese Nr. soll nun kopiert werden und auf der Website www.onvista.de oben rechts im Suchfeld eingegeben werden.
3) Nach dem Klick auf den gefundenen Eintrag erscheint die neue Seite mit der URL: http://www.onvista.de/aktien/Porsche-Aktie-DE000PAH0038
4) Bei dieser URL möchte ich nur den Teil "Porsche-Aktie-DE000PAH0038" (da nur dieser variabel ist) kopieren und in die leere Zelle B2 schreiben lassen. Die Schleife möchte ich dann so lange laufen lassen, bis ich alle "URL-Teile" habe.
Hoffe es war so etwas verständlicher. Vielen Dank schon mal für Deine schnelle Antwort!
Grüße Maik
Anzeige
AW: Suche einer Website per VBA nutzen
15.11.2016 09:17:51
Albert
Moin Maik,
ich hab sowas schon mal mit ner Google-Suche gemacht.
In der Spalte A stehen Namen bzw. Begriffe und in Spalten weiter rechts werden dann
die Schlagworte und Links abgelegt.
Wäre das was für dich?
Gruß
A.
AW: Suche einer Website per VBA nutzen
15.11.2016 14:46:45
Maik
Hallo Albert,
ja das wäre eventuell was für mich. Denke das könnte ich mir für mein Problem umschreiben (bzw. es versuchen). Wäre super, wenn du mir das vll. zukommen lassen könntest.
Über weitere Anregungen und Hilfe wäre ich euch weiterhin sehr dankbar.
AW: Suche einer Website per VBA nutzen
15.11.2016 20:13:34
Martin
Hallo Maik,
gut, damit kann ich etwas anfangen. Probiere mal folgenden Code:
Sub SplitURLsToCells()
Dim iLastRow As Long, i As Long
Dim IEApp As Object
Dim strURL As String
Set IEApp = CreateObject("InternetExplorer.Application")
iLastRow = Cells(Cells.Rows.Count, 1).End(xlUp).Row
IEApp.Visible = True
IEApp.navigate "http://www.onvista.de"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
For i = 2 To iLastRow
With IEApp.document.all
.searchValue.Value = "DE000PAH0038"
.doSubmit(2).Click
Do: Loop Until IEApp.document.readyState = "complete"
strURL = IEApp.LocationURL
Cells(i, 2) = Right(strURL, Len(strURL) - InStrRev(strURL, "/"))
End With
Next
Set IEApp = Nothing
End Sub
Viele Grüße
Martin
Anzeige
Kleiner Fehler
15.11.2016 20:18:11
Martin
Hallo Maik,
mir ist gerade aufgefallen, dass ich versehentlich immer die Porsche-URL in die Suche eingetragen habe. Hier noch einmal der Code, diesmal werden die Zellen aus Spalte A in die Suche eingetragen:
Sub SplitURLsToCells()
Dim iLastRow As Long, i As Long
Dim IEApp As Object
Dim strURL As String
Set IEApp = CreateObject("InternetExplorer.Application")
iLastRow = Cells(Cells.Rows.Count, 1).End(xlUp).Row
IEApp.Visible = True
IEApp.navigate "http://www.onvista.de"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
For i = 2 To iLastRow
With IEApp.document.all
.searchValue.Value = Cells(i, 1)
.doSubmit(2).Click
Do: Loop Until IEApp.document.readyState = "complete"
strURL = IEApp.LocationURL
Cells(i, 2) = Right(strURL, Len(strURL) - InStrRev(strURL, "/"))
End With
Next
Set IEApp = Nothing
End Sub
Viele Grüße
Martin
Anzeige
Wie wäre es mit einer Rückmeldung?!
16.11.2016 18:15:03
Martin
...denn im Gegensatz zu dir erhalte ich leider keine Email bei einer Antwort und muss immer aktiv nachsehen, ob du etwas geschrieben hast. Oder gehörst du zu den Leuten, die es nach erhaltener Hilfeleistung nicht für nötig halten eine Rückmeldung zu geben?
Gruß Martin
AW: Wie wäre es mit einer Rückmeldung?!
16.11.2016 20:24:11
Maik
Ich habe es leider erst heute Nachmittag zum ausprobieren gepackt. Aber soweit funktioniert es super, vielen Dank! Manchmal stoppt die Ausführung zwar nach einigen Zeilen oder ein Wert wird plötzlich über alle restlichen Spalten mitgetragen, aber damit kann ich soweit leben. Vielen Dank Martin für deine großartige Hilfe :)
Grüße Maik
Anzeige
Dank dir für die Rückmeldung!
16.11.2016 21:24:28
Martin
Es ist schwierig eine Fehlerquelle ausfindig zu machen, wenn ein Fehler sporadisch auftritt. Damit du nicht wieder von Anfang an mit Zeile 2 loslegen musst, habe ich dir das Makro noch leicht modifiziert. Jetzt beginnt die Abfrage aber der Zeile, in der sich die aktive Zelle befindet:
Sub SplitURLsToCells()
Dim iLastRow As Long, iFirstRow As Long, i As Long
Dim IEApp As Object
Dim strURL As String
Set IEApp = CreateObject("InternetExplorer.Application")
iFirstRow = ActiveCell.Row
iLastRow = Cells(Cells.Rows.Count, 1).End(xlUp).Row
IEApp.Visible = True
IEApp.navigate "http://www.onvista.de"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
For i = iFirstRow To iLastRow
With IEApp.document.all
.searchValue.Value = Cells(i, 1)
.doSubmit(2).Click
Do: Loop Until IEApp.document.readyState = "complete"
strURL = IEApp.LocationURL
Cells(i, 2) = Right(strURL, Len(strURL) - InStrRev(strURL, "/"))
End With
Next
Set IEApp = Nothing
End Sub
Viele Grüße
Martin
Anzeige
AW: Dank dir für die Rückmeldung!
17.11.2016 02:28:10
Maik
Ein Problem mit dem Script kann ich da auch nicht wirklich erkennen. Hängt vielleicht mit der Suche bei Onvista zusammen, wer weiß. Aber wie gesagt, damit kann ich leben, da mir auch so schon sehr viel Arbeit gespart wurde. Dank dir, habe es vorher so gelöst, dass ich die Variable i jedes mal umgeschrieben hab. Mit der aktiven Zelle ist es natürlich noch ein bisschen bequemer.
AW: Dank dir für die Rückmeldung!
17.11.2016 09:01:42
Martin
Hallo Maik,
mir ist doch noch eine Idee gekommen den Fehler mit der falschen "Doppelung" der TeilURLS automatisch zu erkennen: Per Schleife wird die Seite jetzt so oft abgefragt, bis wirklich ein neues Ergebnis vorliegt:
Sub SplitURLsToCells()
Dim iLastRow As Long, iFirstRow As Long, i As Long
Dim IEApp As Object
Dim strURL As String
Set IEApp = CreateObject("InternetExplorer.Application")
iFirstRow = ActiveCell.Row
iLastRow = Cells(Cells.Rows.Count, 1).End(xlUp).Row
IEApp.Visible = True
IEApp.navigate "http://www.onvista.de"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
For i = iFirstRow To iLastRow
Do
With IEApp.document.all
.searchValue.Value = Cells(i, 1)
.doSubmit(2).Click
Do: Loop Until IEApp.document.readyState = "complete"
strURL = IEApp.LocationURL
Cells(i, 2) = Right(strURL, Len(strURL) - InStrRev(strURL, "/"))
End With
Loop Until Cells(i - 1, 2)  strURL
Next
Set IEApp = Nothing
End Sub
Damit sollte das Makro noch etwas zuverlässiger arbeiten.
Viele Grüße
Martin
Anzeige
AW: Dank dir für die Rückmeldung!
17.11.2016 14:46:52
Maik
Hallo Martin,
leider hat sich an der Zuverlässigkeit nicht wirklich was geändert. Manchmal läuft das Makro sauber und arbeitet 50 Zeilen ab, manchmal nicht mal eine. Aber wie gesagt, damit kann ich gut leben, da mir schon sehr viel händische Arbeit abgenommen wird. Ich behaupte einfach mal, dass der "Fehler" bei der Website liegt. Onvista ist manchmal sehr langsam was die Suche betrifft. Vielleicht bringt das ja das Makro "aus dem Tritt"
AW: Dank dir für die Rückmeldung!
17.11.2016 22:35:35
Martin
Hallo Maik,
schade, ich dachte das wär "die" Lösung. Ich freue mich aber, dass du trotz der Aussetzer mit dem Makro glücklich bist.
Viele Grüße
Martin
Anzeige
Beispiel-Datei hochladen möglich ? :)
21.11.2016 15:09:38
Werner
Hallo Martin,
eine kleine Bitte:
Kannst Du mal eine Beispiel-Datei hochladen ?
Ich bekomme den Code nicht zum Laufen
Danke vorab und Gruß
Werner
AW: Beispiel-Datei hochladen möglich ? :)
21.11.2016 16:42:00
Maik
Hallo Werner,
mit dieser Datei hier arbeite ich zur Zeit: https://www.herber.de/bbs/user/109615.xlsm
Das ist das "Original" und funktioniert doch recht gut. Momentan wird nur die Spalte mit den URL-Teilen für Onvista bearbeitet. Wenn dort alles abgearbeitet ist werde ich versuchen das Makro umzuschreiben, um dann die offenen Spalten auch noch zu füllen.
AW: Beispiel-Datei hochladen möglich ? :)
21.11.2016 19:02:44
Werner
Hallo Maik,
Danke und coole Idee :)
Bin gespannt, wenn Du die anderen Spalten auch noch gefüllt hast.
... Kann echt viel Lernen von der Datei :) DANKE
Gruß
Werner
Anzeige
AW: Beispiel-Datei hochladen möglich ? :)
21.11.2016 20:03:12
Maik
Kein Problem und viel Spaß damit. Den Dank musst du allerdings an Martin richten, da er das tolle Makro geschrieben hat :) Falls ich demnächst dazu komme auch die anderen Spalten zu füllen kann ich diese Datei dann auch gerne mal hochladen. Da brauche ich für meine Zwecke nämlich andere Teile der URL.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige