Sendkey's

Bild

Betrifft: Sendkey's
von: Tobias
Geschrieben am: 21.11.2003 09:41:07

Guten Morgen
wer hat Erfahrung mit den Sendkey-Befehlen in VBA?!Ich hätte gerne gewusst, wie ich den Tastaturbuffer zurücksetzten kann.
Das grössere Problem ist aber das setzen von Sendkeys, dass heisst, das Timing. Wenn ich in VBA zuerst einen Befehl schicke, der mir dann ein Fenster öffnet (z.B. Save As) wo ich eben mit den Sendkeys anschliessend eine Eingabe machen möchte, dann stimmt der zeitliche Ablauf nicht immer überein. Wie kann ich das ändern, dass die Sendkeys erst nach dem Öffnen des (Save As)-Fenster geschickt werden? Wait geht nicht, da stürzt mir das Programm dauern ab, d.h. er bleibt hängen!

Besten Dank Tobias

Bild


Betrifft: AW: Sendkey's
von: Andreas Walter
Geschrieben am: 21.11.2003 10:39:47

Habe Erfahrung mit SENDKEYS

Ich benutze SENDKEYS für Sachen, die ich anwenden werde, würde es aber nicht in Erwägung zeiehen SENDKEYS in etwas einzubauen, das jemand anders bedienen soll, weil es nicht zuverläßig genug ist.

Ich benutze Application.Wait mit Erfolg.

Wo ist Dein Save As Fenster? In Excel? Dann brauchst Du kein SENDKEYS. In einem fremden Programm, dann nur mit ausreichenden WAITS's, damit sicher ist, dass Fenster offen ist.

Wie man Tastatur-Buffer zurücksetzt weiss ich auch nicht.


Bild


Betrifft: AW: Sendkey's
von: Tobias
Geschrieben am: 21.11.2003 11:24:42

Hallo Andreas Walter
bei mir funktioniert das mit den Waits überhaupt nicht! Wenn ich mein Macro..

Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys ("^p"), True
Application.Wait (Now + TimeValue("0:00:10"))
Application.SendKeys ("{ENTER}"), True
Application.Wait (Now + TimeValue("0:00:10"))
Application.SendKeys ("U:\NBGM\Nbgm_Tabelle_WB.pdf"), True

...laufen lasse, dann muss ich zuerst ca 20 sec. warten und dann kommen die drei Befehle wie aus der Pistole geschossen - und eben manchmal gehts, manchmal auch nicht!?! Weshalb wird das ganze nicht einfach streng hierarchisch abgehandelt?! Es geht darum aus einem XLS ein PDF zu erzeugen und das mache ich eben mit Sendkeys. Das Problem tritt aber nur beim Distiller-Fenster auf, wo ich die PDF-Datei abspeichern soll, siehe obigen Pfad!

Weisst du einen Rat?!
Gruss Tobias


Bild


Betrifft: AW: Sendkey's
von: Andreas Walter
Geschrieben am: 21.11.2003 13:04:58

Erstens habe ich keinen Distiller und kann daher nur Vermutungen anstellen. Ich benutze für etwas ähnliches pdffactory und bin erfolgreich, wenn ich lang genüg warte. Distiller/pdffactory benötigen wirklich ZEIT um aus einer Exceltabelle eine PDF-Datei zu erzeugen. pdffactory arbeitet parallel zur Eingabe vom Anwender, wenn man interaktiv arbeitet. Aber in einem Makro habe ich immer pdffactory genügend Zeit gegeben die Aufbereitung zu machen, vor dem ich den Namen der Datei zuschicke.

In meinem Makros warte ich ich so lang, abhängig von Quantität der Daten auf dem Blatt.

Ich benutze
SendKeys "%dd{Enter}", True
UND NICHT
Application.SendKeys ("^p"), True
Weiss nicht, ob es ein Unterschied gibt.

Du hast als Reihenfolge
-Warten
-Befehl
-Warten
-Befehl
-Warten
-Befehl

Das ist meines erachtens nicht korrekt. Es sollte sein
-Befehl ^p
-Warten das darf nicht lang dauern max. 1-2 Sekunden
- Befehl Enter
-Warten - das dauert jetzt am längsten - die PDF Datei muss erzeugt werden. Hier muss genügend Puffer sein
- Befehl Name der Datei übergeben
-Warten - das dauert 3 bis 5 Sekunden bis Datei im Speiecher auf Platte geschrieben wird (Wo ist U Laufwerk - Netz? dann a bisserl länger)


Ich glaube aber für den Distiller, dass es möglich sein muss, OHNE SENDKEYS arbeiten zu können.

Nutz mal den Makro Recorder und zeichne das was Du machst auf. Erstell dann nur ein Makro daraus, worin der Dateiname variabel ist.

Versuch mal www.google.de und suche nach
site:www.herber.de distiller
Ich habe öfters Fragen zu Distiller hier gesehen

Viel Glück


Bild


Betrifft: AW: Sendkey's
von: Tobias
Geschrieben am: 21.11.2003 14:54:00

Hallo Andreas
besten Dank für deine ausführlichen Tipps! Mein Problem ist aber, dass die Waits nicht funktionieren, d.h. sie werden alle zu Beginn des Programms kummuliert und dann muss ich beim Start einfach die Summe aller Waits abwarten und dann kommen alle anderen Befehle nacheinander! Das ist doch nicht in Ordnung!?!
Ich hab mal ein bisschen ge googlet, aber alles was da angeboten wird ist noch mit anderen Dingen (z.B. DOS) verknüpft. Mein Endlösung sieht aber vor, dass beim Aufstarten der XLS-Datei ohne eine Tätigkeit zu machen, ein PDF-erzeugt wird und da kann ich nicht noch mit DOS etc. operieren!

Gruss Tobias


Bild

Beiträge aus den Excel-Beispielen zum Thema " in einer Zeile suchen Wert ausgeben"