Anzeige
Archiv - Navigation
1736to1740
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

Webseite href link anklicken

Webseite href link anklicken
28.01.2020 16:04:45
Simon
Guten Tag
da unser Händler die Daten nicht direkt aus seinem Shop exportieren kann (Fehler im Export Modul) dürfen wir jedoch die Daten direkt vom Webshop kopieren da dies Händisch zulange dauern wird möchten ich dies gerne über VBA realisieren.
Wir haben alle Artikelnummern in eine Tabelle gelistet und müssen nu nach diesen Nummern im Onlineshop suchen und so die Beschreibung usw.. in Excel kopieren ich habe folgenden Code geschrieben habe jedoch ein kleines Problem.
ich öffne den Link für die Suche und gebe hinten die Artikelnummer an sprich A1 bis A2000 das wäre der Ticker
.Navigate "https://www.stama.ch/catalogsearch/result/?q=" & ticker
dies klappt ohne Probleme nur leider öffnet sich der Artikel nicht direkt sonder ich muss zuerst auf Details anzeigen klicken.
was ich aber leider nicht realisiert bekomme danach würde ich dann die Elemente via ClassName auslesen und eintragen.
hinter Details Anzeigen ist ein href link es wäre auch möglich einfach diesen auszulesen und in die Tabelle einzutragen danach könne ich auch ein neues Makro schreiben das direkt auf diesen Link zugreift.
nun mein Code als Beispiel habe ich A1-A4 genommen das wären folgende Nummern
1073012
1073014
1073162SET
1073253
Sub Artikelberschreibung()
On Error GoTo Sprungmarke
Dim appIE As Object
Dim ticker As String
Dim myValue As String
Dim i As Integer
For i = 1 To 4
ticker = Range("A" & i)
Set appIE = CreateObject("internetexplorer.application")
appIE.Top = 0
appIE.Left = 0
appIE.Width = 800
appIE.Height = 600
appIE.Visible = True
With appIE
.Navigate "https://www.stama.ch/catalogsearch/result/?q=" & ticker
End With
Do While appIE.Busy
DoEvents
Loop
HIER MÜSSTE ICH AUF DETAIL ANZEIGEN KLICKEN
Set allRowOfData = appIE.document.getElementsByClassName("std")
myValue = allRowOfData(0).innerText
Range("B" & i).Value = myValue
neubeginnen:
appIE.Quit
Set appIE = Nothing
Next i
Exit Sub
Sprungmarke:
Resume neubeginnen
End Sub
Vielen Dank für euere Hilfe

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Webseite href link anklicken
28.01.2020 16:50:13
Zwenn
Hallo,
nur ganz auf die Schnelle in den Quellcode der Seite gesehen. Wenn es nur ein Element mit der CSS-Klasse "btn btn-default bottom-left col-xs-12 " gibt, ist das Deine Zeile:
appIE.document.getElmentsByClassName("btn btn-default bottom-left col-xs-12 ")(0).Click
Viele Grüße,
Zwenn
AW: Webseite href link anklicken
28.01.2020 17:09:12
volti
Hallo,
wenn ich als Ticker z.B. nur 1 vorgebe, kommt 'ne ganze Reihe von Produkten und damit mehrere Detail-Buttons mit diesem Classnamen.
Da greift zwar auch der Code
'HIER MüSSTE ICH AUF DETAIL ANZEIGEN KLICKEN
appIE.document.getElementsByClassName("btn btn-default bottom-left col-xs-12")(0).Click

aber es müsste die Elementnummer (0 bis x) mitgegeben werden.
viele Grüße
Karl-Heinz
Anzeige
AW: Webseite href link anklicken
28.01.2020 18:29:33
Simon
@volti
wie meinst du das mit den Elementnummern? leider funktioniert es mit diesem Code nicht
für was steht denn die (0)?
Danke Simon
AW: Webseite href link anklicken
28.01.2020 19:03:33
Zwenn
Hallo Simon,
sinngemäß geht es so. Allerdings wurde bei mir nicht jeder Wert ausgelesen und ich habe das jetzt nicht näher untersucht. Im Code sind einige Erklärungen als Kommentare hinterlegt.
Unbedingt immer und in jedem Modul ganz oben hinschreiben. Das sorgt dafür, dass Du variablen deklarieren musst und schützt Dich vor Schreibfehlern, die Dich sonst bei der Fehlersuche wahnsinnig machen können:
Option Explicit
Hier das ergänzte Makro:
(Die Zeilenumbrüche mit den Unterstrichen sind von der Forensoftware eingefügt worden. Die musst Du entfernen)

Sub Artikelberschreibung()
On Error GoTo Sprungmarke
Dim appIE As Object
Dim nodeButton As Object
Dim allRowOfData As Object
Dim ticker As String
Dim myValue As String
Dim i As Integer
For i = 1 To 4
ticker = Range("A" & i)
Set appIE = CreateObject("internetexplorer.application")
appIE.Top = 0
appIE.Left = 0
appIE.Width = 800
appIE.Height = 600
appIE.Visible = True
With appIE
.Navigate "https://www.stama.ch/catalogsearch/result/?q=" & ticker
End With
Do While appIE.Busy: DoEvents: Loop
'Mit getElementsByClassName() wird eine NodeCollection erzeugt. Eine Collection kann keine
'bis beliebig viele Elemente enthalten. In diesem Fall werden HTML-Elemente in der
'Collection abgelegt, die alle dem Kriterium unterliegen die gleiche CSS-Klasse zugewiesen
'bekommen zu haben
'Wichtig: Bei einem Element handelt sich dabei nicht zwingend um einen einzigen HTML-Tag,
'sondern in der Regel um HTML-Strukturen
Set nodeButton = appIE.document.getElementsByClassName("btn btn-default bottom-left col-xs- _
12 ")
'Die einzelnen Element einer NodeCollection sind mit Indizes durchnuimmeriert. Wie bei  _
Arrays
'Die Indizierung beginnt immer bei 0 (Null). Will man also auf das erste Element zugreifen,
'schreibt man den Namen der NodeCollection gefolgt vom gewünschten Index in runden Klammern
'In diesem Fall ist unser Element der Link und dieser hat natürlich die Möglichkeit
'angeklickt zu werden
nodeButton(0).Click
'Um der aufgerufenen Seite hinter dem Link Zeit zu geben geladen zu werden, braucht man an
'dieser Stelle eine manuelle Pause. Ich habe hier 3 Sekunden gewählt
Application.Wait (Now + TimeSerial(0, 0, 3))
Set allRowOfData = appIE.document.getElementsByClassName("std")
myValue = allRowOfData(0).innerText
Range("B" & i).Value = myValue
neubeginnen:
appIE.Quit
Set appIE = Nothing
Next i
Exit Sub
Sprungmarke:
Resume neubeginnen
End Sub
Viele Grüße,
Zwenn
Anzeige
AW: Webseite href link anklicken
28.01.2020 20:23:48
Simon
Hallo Zwenn
Vielen Dank für die Hilfe, Code funktioniert perfekt.
Danke Simon

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige