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

Sendkey schickt kein Enter

Forumthread: Sendkey schickt kein Enter

Sendkey schickt kein Enter
15.06.2004 22:14:42
Uli
Hallo zusammen,
beim Versuch, ein ebay-Login zu automatisieren, konte ich zwar Name und Passwort eintragen, kann aber das Ganze nicht abschicken. Wenn ich den IE sichtbar schalte, muß ich nur noch händisch 'Enter' drücken und bin wunderbar angemeldet. Versucht habe ich sowohl ein sendkey {Enter} nach der Eingabe des Passwortes, wie auch einen Tab auf de Schaltfläche und anschließendem Enter.
Nichts davon geht.
Woran kann das liegen ?
Hier der Code:

Sub ebayLogin()
Dim appIE As Object
Set appIE = CreateObject("InternetExplorer.Application")
appIE.Visible = True
appIE.Navigate <a href=""http://signin.ebay.de/aw-cgi/eBayISAPI.dll?SignIn"">"http://signin.ebay.de/aw-cgi/eBayISAPI.dll?SignIn"</a>
Do: Loop Until appIE.Busy = False
Do: Loop Until appIE.Busy = False
Application.Wait (Now + TimeValue("00:00:01"))
Application.SendKeys "username", True
Application.Wait (Now + TimeValue("00:00:01"))
Application.SendKeys "{tab}^a{del}passwort", True
Application.Wait (Now + TimeValue("00:00:01"))
Application.SendKeys "{tab}", True
Application.Wait (Now + TimeValue("00:00:01"))
Application.SendKeys "{enter}", True
Application.Wait (Now + TimeValue("00:00:10")) 'etwas beobachten
Do While True
'Einfach nur für einen Breakpoint
Loop
Set appIE = Nothing
End Sub

User und PW sind natürlich durch richtige Werte zu ersetzen. Die Waits habe ich sicherheitshalber eingebaut, sie helfen aber nicht. ^a{del} löscht ein im IE gespeichertes Passwort vor der neuen Eingabe.
Ich bin natürlich für jeden Rat dankbar !
Gruß
Uli
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sendkey schickt kein Enter
16.06.2004 09:05:02
Andy
Hallo Uli,
in einem meiner kleinen Proggy's heißt es z.B.:

Sub EndeNichtSpeichern()
Application.DisplayFullScreen = False
Application.DisplayAlerts = False
ActiveWorkbook.Close
SendKeys ("%N")
'AktivesFenster.Schliessen
Workbooks.Add
Application.DisplayAlerts = True
End Sub

Sollte es da bei dir nicht auch einfach nur SendKeys ("Enter")
heißen?
Gruß
Andy
Anzeige
AW: Sendkey schickt kein Enter
16.06.2004 17:07:08
Uli
Hallo Andy,
wie es so ist, habe ich es aus einem anderen Beispiel abgeschrieben.
Ich nehme an, Du meinst den Unterschied zu application.sendkeys und nicht sendkeys("enter") ohne geschweifte Klammern....
Wenn ich application. nicht davor stelle, klappt es seltsamerweise gar nicht.
Mit meiner Version bekomme ich nur die Seite nicht abgeschickt. Ich hatte schon den Verdacht, daß das keine normale Form ist, sondern irgendein Applet, das genau so eine Automatisierung beim Login verhindern soll. Ich kann das aber nicht belegen.
Gruß
Uli
Anzeige
AW: Sendkey schickt kein Enter
16.06.2004 18:20:28
Otto
Hallo Uli,
Meine Testumgebung: Excel 9.0 SR-1, Multilingual unter Windows 2000 SP-4
Was hältst Du von:
Allerdings kenne ich Ebay nicht, vielleicht musst Du mit den Parametern noch ein bisschen spielen.
Der Sendkey war eine Anmerkung nur zum Steuern der Internetoptionen, nicht des IE.
Gruß Otto
Anzeige
AW: Sendkey schickt kein Enter
17.06.2004 20:33:58
Uli
Hallo Otto,
Dein Beispiel sieht nett aus - bei mir klappt es nicht. Braucht man dafür Bibliotheken aus der Visual Basic Developper Version ? Ich haben nämlich nur VBA aus Office zur Verfügung.
Woher hast Du die Parameter für den Login bei ebay ? Ich habe mir da schon die Finger wund gegoogelt ohne daß ich mal auf eine Liste der Parameter gestoßen wäre. Das was man findet, ist zum Teil recht widersprüchlich und nur wenig funktioniert.
Ich habe die URL oben mal direkt eingegeben und ebay nimmt sie so nicht an. In Variationen kommt dann eine Meldung, der Browser würde keine Cookies akzeptieren, obwohl ich testweise alles freigeschaltet habe.
Nun ich teste einfach mal weiter...
Auf jeden Fall mal wieder vielen Dank !
Uli
Anzeige
AW: Sendkey schickt kein Enter
18.06.2004 09:51:42
Otto
Hallo Ulli,
Meine Testumgebung: Excel 9.0 SR-1, Multilingual unter Windows 2000 SP-4
1. Die Parameter für den ExecWB sind mit einem ausgewählten Verweis auf Internet Assistant erschlagen, das sollte beim normalen VBA dabei sein?
2. Die Parameter fürs Login bekommst Du, indem Du einfach nur Deinen Usernamen in die Maske einträgst und dann ohne Kennwort abschickst.
Gruß Otto
Anzeige
ExecWB
18.06.2004 14:15:31
Otto
Hallo Ulli,
Meine Testumgebung: Excel 9.0 SR-1, Multilingual unter Windows 2000 SP-4
Korrektur zum Punkt 1:
Die Parameter für den ExecWB sind mit einem ausgewählten Verweis auf Microsoft Internet Controls erschlagen, das sollte beim normalen VBA dabei sein?
Gruß Otto
Anzeige
AW: ExecWB
18.06.2004 14:34:39
Uli
Hallo Otto,
den Eintrag des Verweises auf die Microsoft Internet Controls habe ich eingetragen und kann die Funktionen jetzt auch sehen. Es hapert noch an der Hilfe-Funktion, die muß ich durch Intuition ersetzen. Vielleicht springt mich ja auch kurzfristig eine VB Lizenz aus ebay an....
Der Anmeldeversuch ohne Passwort meldet auch nur eine Parameterliste ohne einen Parametr für das Passwort zurück. Das kann aber 'pass=' sein oder 'pw=' oder, oder, oder...
Ich werde mal mit dem Sniffer nachsehen, was bei einer erfolgreichen Anmeldung über den Draht geht.
Gruß
Uli
Anzeige
So klappt Sendkey
17.06.2004 10:45:20
Otto
Hallo Uli,
Meine Testumgebung: Excel 9.0 SR-1, Multilingual unter Windows 2000 SP-4
bei mir klappt:
Ich sehe den Hauptunterschied beim Shell?
Gruß Otto
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Automatisierung des eBay-Logins mit VBA SendKeys


Schritt-für-Schritt-Anleitung

Um ein eBay-Login mit VBA zu automatisieren, kannst du die Application.SendKeys-Methode verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und erstelle ein neues Modul:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke auf Einfügen > Modul.
  2. Füge den folgenden Code ein:

    Sub ebayLogin()
       Dim appIE As Object
       Set appIE = CreateObject("InternetExplorer.Application")
       appIE.Visible = True
       appIE.Navigate "http://signin.ebay.de/aw-cgi/eBayISAPI.dll?SignIn"
    
       ' Warten, bis die Seite geladen ist
       Do While appIE.Busy Or appIE.ReadyState <> 4: DoEvents: Loop
    
       Application.Wait (Now + TimeValue("00:00:01"))
       Application.SendKeys "username", True
       Application.Wait (Now + TimeValue("00:00:01"))
       Application.SendKeys "{tab}^a{del}password", True
       Application.Wait (Now + TimeValue("00:00:01"))
       Application.SendKeys "{tab}", True
       Application.Wait (Now + TimeValue("00:00:01"))
       Application.SendKeys "{enter}", True
       Application.Wait (Now + TimeValue("00:00:10")) ' Beobachten
    
       Set appIE = Nothing
    End Sub
  3. Ändere username und password zu deinen echten Anmeldedaten.

  4. Führe das Makro aus:

    • Drücke F5 oder wähle Ausführen > Sub/UserForm ausführen.

Häufige Fehler und Lösungen

  • SendKeys funktioniert nicht: Stelle sicher, dass du Application.SendKeys verwendest und nicht nur SendKeys. Wenn du Application.SendKeys verwendest und es trotzdem nicht funktioniert, könnte eine Anwendung im Vordergrund sein, die den Fokus hat.

  • Warten auf Seite: Achte darauf, dass du genug Zeit für das Laden der Seite einräumst. Du kannst Application.Wait erhöhen, um sicherzustellen, dass die Seite vollständig geladen ist.

  • Cookies und Sicherheitseinstellungen: Manchmal werden Anmeldungen durch Sicherheitseinstellungen oder Cookie-Einstellungen im Browser blockiert. Überprüfe diese in den Internetoptionen.


Alternative Methoden

Eine alternative Methode zur Automatisierung des Logins ist die Verwendung der ExecWB-Methode:

Sub LoginViaExecWB()
    Dim appIE As Object
    Set appIE = CreateObject("InternetExplorer.Application")
    appIE.Visible = True
    appIE.Navigate "http://signin.ebay.de/aw-cgi/eBayISAPI.dll?SignIn"

    Do While appIE.Busy Or appIE.ReadyState <> 4: DoEvents: Loop

    ' Verwende ExecWB zum Ausfüllen von Formularen
    appIE.ExecWB 4, 0, "username", "password" ' 4 = execWB, 0 = leere Parameter
End Sub

Diese Methode könnte für spezifische Formulare besser funktionieren.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du mit SendKeys eine Reihe von Tastenanschlägen simulieren kannst:

Sub SimulateKeyPress()
    Application.SendKeys "Hello, World!"
    Application.SendKeys "{ENTER}"
End Sub

Mit diesem Code sendest du den Text "Hello, World!" und drückst anschließend Enter.


Tipps für Profis

  • Verzögerungen anpassen: Experimentiere mit den Wartezeiten zwischen den SendKeys, um die Stabilität der Automatisierung zu erhöhen. Manchmal kann eine zusätzliche Sekunde den Unterschied machen.

  • Fehlerbehandlung einfügen: Füge Fehlerbehandlungsroutinen hinzu, um das Skript robuster zu gestalten. Verwende On Error GoTo für eine bessere Kontrolle.

  • Verwendung von Application.SendKeys: Achte darauf, dass du die geschweifte Klammer verwendest, wenn du spezielle Tasten wie {ENTER} sendest.


FAQ: Häufige Fragen

1. Warum funktioniert SendKeys manchmal nicht?
SendKeys kann unzuverlässig sein, wenn andere Fenster im Vordergrund sind oder wenn die Anwendung nicht im Fokus ist. Achte darauf, dass dein VBA-Fenster aktiv ist.

2. Was kann ich tun, wenn Application.SendKeys nicht funktioniert?
Überprüfe die Sicherheitseinstellungen deines Browsers und stelle sicher, dass keine Pop-ups oder Sicherheitswarnungen die Ausführung des Codes unterbrechen.

3. Welche Excel-Version benötige ich?
Der bereitgestellte Code funktioniert in Excel VBA 9.0 SR-1 und neueren Versionen. Stelle sicher, dass du die richtigen Verweise in deinem VBA-Projekt hinzugefügt hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige