Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Internet seite per excel steuern - select

Forumthread: Internet seite per excel steuern - select

Internet seite per excel steuern - select
13.07.2014 17:24:54
Peter
Hallo
habe eine Webseite die ich steuern möchte per Excel.
beim der Webseite gibt es ein Eingabe Fenster (Suche) in dem ich mit diesem Code Werte per Excel eintragen kann:
VBA (Teil-)code:
......
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.navigate "http://....."
Do Until .ReadyState = 4
DoEvents
Loop
Application.Wait Now + TimeSerial(0, 0, 1) 'wait 1 sec
For i = 0 To 1 'go through every row of the table
Set dmt = .document
dmt.all("Suchwort").Value = "123WERT456"
......
der html code zeigt zu diesem Eingabe Feld folgendes:
(Zeichen"" durch "}", sonst wird im Explorer die geschriebene Funktion übersetzt und des Feld angezeigt, weis nicht wie man hier nur den code anzeigen kann...)
......
{td align="left"}
EINGABE:
{input type="text" style="width: 350px;" value="" name="keyword"}
{/td}
......
das sieht dann so aus:

EINGABE:


Der VBA Code funktioniert - es wird damit der Wert "123WERT456" eingetragen.
nach Bestätigung der Eingabe (Enter)
wird auf der Webseite ein Suchergebnis angezeigt.
Das zum Backup, nun zu meinen 2 Fragen:
1.
Im Suchergebnis gibt es unten ein Auswahlfeld in denen die Anzahl der angezeigten Einträge Ansichten ausgewählt werden können. (5, 10 oder 30)
Als default ist immer "5" gesetzt. Ich möchte aber "30" per VBA setzen.
Dies gelingt mir einfach nicht.
2.
Das Suchergebnis hat mehrere Seiten (so wie z.b. bei google)
ich möchte die einzelnen Seiten per VBA steuern, das bekomme ich auch nicht hin.
der html code zeigt zu diesem Feld folgendes:
{li}{table class="gridToolbar" width="100%" border="0" cellspacing="0"}
{tbody}
{tr}
{td}
{div class="box"}
{div class="leftControls"} {/div}
{div class="paginationControls"}
{span class="buttonLabel"}1 - 5 of 543{/span}
{img style="border:0" src="/webd/images/firstPageDisabled.gif"}
{img style="border:0" src="/webd/images/prevPageDisabled.gif"}
[1]
{a href="javascript:simpleTable.togglePage(2);"}[2]{/a}
{a href="javascript:simpleTable.togglePage(3);"}[3]{/a}
{a href="javascript:simpleTable.togglePage(4);"}[4]{/a}
{a href="javascript:simpleTable.togglePage(5);"}[5]{/a}
{a href="javascript:simpleTable.togglePage(2);"}
{a href="javascript:simpleTable.togglePage(39);"}
{select onchange="simpleTable.togglePageSize(this.value)"}
{option selected="" value="5"}5{/option}
{option value="10"}10{/option}
{option value="30"}30{/option}
{/select}
{/div}
{div} {/div}
{/div}
{/td}
{/tr}
{/tbody}
{/table}{/li}
.....
das sieht dann ungefähr so aus (dann nur in einer Zeile anstatt untereinander):










  • 1 - 5 of 543
    [1]
    [2]
    [3]
    [4]
    [5]







  • ........
    Könnt ihr da helfen?

    Anzeige

    6
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Internet seite per excel steuern - select
    13.07.2014 18:38:34
    Michael
    Hallo Peter,
    vom Fleck weg eher nicht, aber das Thema ist interessant.
    Ist es für Dich ein Aufwand, das Skript handlich zu verpacken und zu neutralisieren (etwa mit einer google-Abfrage), und die Datei raufzuladen, so daß man konkret damit herumtesten kann?
    Schöne Grüße,
    Michael

    Anzeige
    AW: Internet seite per excel steuern - select
    14.07.2014 08:51:27
    Martin
    Hallo Peter,
    das das Auswahlfeld keinen Namen und keine ID besitzt, musst du alle Felder nach ihrem Typ abfragen, bis das Select-Feld gefunden ist. Falls es mehrere Select-Felder gibt, kannst zusätzlich abfragen, ob der Wert "5" ist. Anschließend kannst du den Wert bequem ändern:
        'Alle Formularfelder auslesen
    Dim frm As Object, ele As Object
    For Each frm In appIE.document.forms
    For Each ele In frm.elements
    With ele
    Debug.Print "Name=" & .Name & ", Type=" & .Type & ", Value=" & .Value
    End With
    Next ele
    Next frm
    
    Ebenso verhält es sich mit den Links:
    Sub LinksAuslesen()
    Dim link As Object
    With CreateObject("InternetExplorer.Application")
    Do While .Busy 'Warten bis IE komplett geladen
    Loop
    .Visible = True
    .navigate "http://....."
    Do: Loop Until .readyState = 4
    For Each link In .document.Links
    Debug.Print link.innerText & " - " & link.HRef
    Next
    '.Quit
    End With
    End Sub
    Next
    
    Die Links sind bestimmt in einer bestimmten Tabelle oder einem spezellen DIV-Container. Ich würde nur die darin enthaltenen Links per Schleife durchgehen.
    Viele Grüße
    Martin

    Anzeige
    AW: Internet seite per excel steuern - select
    14.07.2014 10:25:00
    Peter
    Hallo Michael,
    leider ist es mir nicht möglich die Webseite zu kürzen und als Datei hier hochzuladen. Weis einfach wirklich nicht wie das geht... :-(
    Hallo Martin,
    danke für den input werde ich ausprobieren.
    Ja leider haben diese Felder keinen Namen.
    Ich schau dass ich es heute abend machen kann und gebe dann ein feedback.
    Nur so am Rande:
    wie bekommst Du hier den code so schon übersichtlich rein? bei mir wird alles linksbündig umgesetzt egal ob ich einen Tab habe oder nicht.
    Ich denke ich brauch vielleicht so einen html code? ""
    Gruß Peter

    Anzeige
    AW: Internet seite per excel steuern - select
    14.07.2014 13:19:21
    Martin
    Hallo Peter,
    beim Posten deines VBA-Codes musst du auf den Button "Code " über dem Eingabefeld klicken und dein Makro zwischen dem und dem einfügen:
    Userbild
    Das geht aber nur bei VBA-Code, nicht bei HTML-Code.
    Viele Grüße
    Martin

    Anzeige
    AW: Internet seite per excel steuern - select
    14.07.2014 15:33:42
    Michael
    Hallo Peter,
    da haben wir uns mißverstanden. Ich meine natürlich Deine Excel-Datei.
    Gruß,
    Michael

    AW: Internet seite per excel steuern - select
    14.07.2014 15:44:06
    Peter
    Hallo Martin,
    also hab es ausprobiert:
    zu 1. Select-Feld:
    interessant, es wird nur ausgelesen:
    "
    Name=keyword, Type=text, Value=123WERT456
    Name=, Type=submit, Value=?
    "
    mehr nicht! Keine 5, 10 oder 30 Werte.
    Das Ding: "Name=, Type=submit, Value=?"
    scheint der Absendebutton neben dem Eingabefeld zu sein.
    zu 2. links:
    "
    [2] - javascript:simpleTable.togglePage(2);
    [3] - javascript:simpleTable.togglePage(3);
    [4] - javascript:simpleTable.togglePage(4);
    [5] - javascript:simpleTable.togglePage(5);
    - javascript:simpleTable.togglePage(2);
    - javascript:simpleTable.togglePage(39);
    "
    Mehr hier auch nicht.
    Gibt es vielleicht eine Möglichkeit wenigstens diese Seiten anzusprechen?
    zB. so was wie:
    ....simpleTable.togglePage(4).Click ? :-)
    Gruß Peter
    Anzeige
    ;
    Anzeige
    Anzeige

    Infobox / Tutorial

    Internetseite per Excel steuern: VBA-Anleitung für Einsteiger


    Schritt-für-Schritt-Anleitung

    Um eine Webseite per Excel zu steuern, benötigst du grundlegende Kenntnisse in VBA (Visual Basic for Applications). Hier ist eine einfache Anleitung, um die gewünschten Änderungen vorzunehmen.

    1. VBA-Editor öffnen:

      • Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.
    2. Neues Modul erstellen:

      • Klicke mit der rechten Maustaste auf "VBAProject (dein Dokument)" und wähle Einfügen > Modul.
    3. Code einfügen:

      • Füge den folgenden Code in das neue Modul ein:
      Sub WebseiteSteuern()
         Dim ie As Object
         Set ie = CreateObject("InternetExplorer.Application")
         With ie
             .Visible = True
             .navigate "http://deine-webseite.com"
             Do Until .ReadyState = 4
                 DoEvents
             Loop
             ' Warte 1 Sekunde
             Application.Wait Now + TimeSerial(0, 0, 1)
      
             ' Wert in das Suchfeld eingeben
             .document.all("Suchwort").Value = "123WERT456"
             ' Bestätige die Eingabe
             .document.all("submit").Click
      
             ' Setze die Anzahl der angezeigten Einträge auf 30
             Dim selectField As Object
             For Each selectField In .document.getElementsByTagName("select")
                 If selectField.Name = "" Then
                     selectField.Value = "30"
                     Exit For
                 End If
             Next selectField
         End With
      End Sub
    4. Ausführen:

      • Führe das Skript aus, indem du im VBA-Editor auf F5 drückst.

    Häufige Fehler und Lösungen

    • Fehler: Das Auswahlfeld wird nicht gefunden:

      • Stelle sicher, dass das Auswahlfeld tatsächlich kein Name oder ID hat. Verwende die Methode getElementsByTagName, um alle select-Elemente durchzugehen.
    • Fehler: Der Wert wird nicht gesetzt:

      • Überprüfe, ob der Wert "30" tatsächlich existiert. Es kann hilfreich sein, die gesamte Liste der Optionen auszulesen.
    • Fehler: Internet Explorer bleibt hängen:

      • Füge eine DoEvents-Schleife hinzu, um sicherzustellen, dass die Webseite vollständig geladen ist, bevor der Code fortfährt.

    Alternative Methoden

    Anstelle von Internet Explorer kannst du auch andere Browser steuern, indem du Selenium verwendest. Hier ist ein Beispiel, wie du Selenium mit VBA nutzen kannst:

    1. Selenium installieren:

      • Lade Selenium Basic herunter und installiere es.
    2. Code anpassen:

      • Verwende den folgenden Code, um mit Chrome zu arbeiten:
      Sub SeleniumSteuern()
         Dim bot As New WebDriver
         bot.Start "chrome", "http://deine-webseite.com"
         bot.Get "/"
         bot.FindElementByName("Suchwort").SendKeys "123WERT456"
         bot.FindElementByName("submit").Click
         bot.FindElementByTag("select").SelectByValue "30"
      End Sub

    Praktische Beispiele

    1. Wert in ein Textfeld eingeben:

      .document.all("Suchwort").Value = "DeinSuchbegriff"
    2. Seitenwechsel steuern:

      .document.parentWindow.execScript "simpleTable.togglePage(2);"

    Tipps für Profis

    • Debugging: Verwende Debug.Print, um den aktuellen Status von Variablen zu überprüfen.
    • Fehlerbehandlung: Integriere On Error Resume Next, um Fehler abzufangen, ohne dass das Skript stoppt.
    • Wartezeiten optimieren: Experimentiere mit Application.Wait und DoEvents, um die Performance des Skripts zu verbessern.

    FAQ: Häufige Fragen

    1. Wie kann ich die Anzahl der angezeigten Einträge ändern?
    Du kannst das select-Feld durchlaufen und den Wert auf „30“ setzen, wie im Beispiel gezeigt.

    2. Was tun, wenn sich das Auswahlfeld nicht richtig anpassen lässt?
    Überprüfe die Webseite im Browser-Entwicklertools, um sicherzustellen, dass du das richtige select-Element ansprichst.

    3. Warum funktioniert das Skript nur im Internet Explorer?
    Der Code verwendet spezifische Methoden von Internet Explorer. Für andere Browser musst du möglicherweise Anpassungen vornehmen, wie bei der Verwendung von Selenium gezeigt.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige