Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1240to1244
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

SendKeys

SendKeys
ing.grohn
Hallo Forum,
ziel ist, mittels Sendkeys Daten in ein PDF-Formular zu schreiben.
Allein, ich scheiter schon an Beispielen aus der VBA-Hilfe!
Sub SneKeysRechner()
Dim Ergebnis, I
Ergebnis = Shell("CALC.EXE", 1)  ' Rechner starten.
AppActivate Ergebnis             ' Rechner aktivieren.
For I = 1 To 100
SendKeys I & "{+}", True     ' Tastenanschläge senden, um die
Next I
SendKeys "=", True               ' Gesamtsumme abrufen.
SendKeys "%{F4}", True           ' Rechner mit ALT+F4 beenden.
End Sub
Sub SendKeysWord()
Dim AnwID, I
' AppActivate kann auch den Rückgabewert der Shell-Funktion verwenden.
AnwID = Shell("C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE", 1)    ' Microsoft Word  _
starten.
AppActivate 4012 'AnwID     ' Microsoft Word' aktivieren.
For I = 1 To 100
SendKeys I & "{+}", True     ' Tastenanschläge senden, um die
Next I
End Sub

das erste Beispiel funktioniert nur teilweise: in der Zeile " AppActivate Ergebnis " meldet sich der Debugger. Sage ich "debuggen" und drücke F5 gehts weiter und das Programm läuft.
das zweite Beispiel tuts gar nicht (ebenfalls aus der Hilfe (ohne die For-Schleife)) und bleibt komplett an der Zeile AppActivate AnwId hängen.
Was muß da geändert werden, damit diese Besipiele funktionieren?
Was muß ich beachten, wenn ich das mit AcroRd32 machen möchte?
Vielen herzlichen Dank für eine Antwort!
Mit freundlichen Grüßen
ALbrecht

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

Betreff
Benutzer
Anzeige
AW: SendKeys
18.12.2011 15:16:04
Jürgen
Hallo Albrecht,
SendKeys ist immer so eine Sache. Wenn das Ziel ist, ein PDF-Formular zu befüllen, würde ich Dir eher den Weg über eine .fdf-Datei empfehlen. Das ist eine Text-Datei, die die Formulardaten zu einer PDF-Datei enthält. Wenn Du die Feldnamen des PDF-Formulars kennst, ist eine solche Datei nicht schwer zu erstellen. Ausgangspunkt könnte sein, dass Du ein Formular ausfüllst und die reinen Formulardaten exportierst. Das geht z.B. mit der Acrobat Vollversion (ob nun auch mit der aktuellen Acrobat Reader Version oder einer der Alternativen kann ich auf die Schnelle nicht sagen). Ein Beispiel ("PDF-Formular-Filler" ?) auf Excel-Basis gab es mal zum Download.
Für den Fall, dass es aus einem guten Grund doch SendKeys sein muss oder Dir die Zusatzsoftware fehlt lasse ich die Frage auf "offen"
Gruß, Jürgen
Anzeige
AW: SendKeys
18.12.2011 15:37:25
ing.grohn
Hallo Jürgen,
es ist schon richtig, dass .fdf Dateien die bessere Lösung wäre. Allerdings habe ich nicht die professionelle Version des Acrobat und kenne demnach auch die Felder der Formulare nicht. Weiterhin kann ich nicht sagen, ob die Formulare nicht zusätzlich geschützt sind.!? Die Sache mit SendKeys scheint jedenfalls auch sehrdornen reich zu sein.
Vielen DAnk für Deine Antwort
Einen netten 4. Advent wünscht
Albrecht
AW: SendKeys
19.12.2011 19:03:53
Jürgen
Hallo Albrecht,
wenn Du den .fdf-Weg doch noch aufgreifen möchtest, weil das SendKeys zu lange dauert, dann könnte Dir z.B. der kostenlose PDF-XChange-Viewer helfen, um an den Aufbau der .fdf-Datei zu gelangen, da dieser den Export der Formulardaten als .fdf-Datei unterstützt (sofern die PDF-Datei nicht dagegen gesperrt ist).
Und wenn es etwas kosten darf, bekommt man für weniger als 80 Euro den Nuance PDF Converter Professional 7 (älter Versionen möglicherweise günstiger), der das meiste von dem kann, was auch der Adobe Acrobat kann, und dass oft besser.
Gruß, Jürgen
Anzeige
AW: SendKeys
18.12.2011 16:36:46
fcs
Hallo Albrecht,
das Starten des Taschenrechners und senden der Plus-Befehle funktioniert bei mir (Windows-Vista, Excel 2007) ohne Probleme.
Bei Word gibt es verschiedene Probleme bzw. ist einiges zu beachten.
Die Shell-Anweisung öffnet in Word neues leeres Dokument (jedenfals bei meinen Einstellungen).
Ist Word noch nicht gestartet, dann wird zuerst Word gestartet ansonsten wird ein weiteres leeres Dokument geöffnet.

AppActivate AnwID        'funktioniert nur wenn Word-Anwendung noch nicht geöffnet
AppActivate "Dokument"   'funktioniert auch mit geöffnetem deutschem Microsoft Word

Bei bereits geöffnetem Word gibt es scheinbar MischMasch bei der AnwendungsID, die SHELL zurückgibt.
Beim Acrobat Reader sind die Probleme ähnlich.
Wenn die Anwendung bereits geöffnet ist, dann muss der genaue Fenstertitel bzw. der Anfang des Fenstertitels übergeben werden, ansonsten kann mit der von SHELL zurückgegebenen AnwendungsID gearbeitet werden.
Nachfolgendes Beispiel öffnet eine pdf-Datei im Acrobat-Reader, druckt die Datei und beendet den Reader.
Ist die Datei bereits in Acrobat Reader geöffnet, dann muss "nur" der korrrekte Programm-Titelfenstertext übergeben werden.
Gruß
Franz
Sub SendKeysAcroRead()
Dim AnwID, I, sPfad As String, sName As String
On Error GoTo Fehler
'Dateiname in Acrobat Reader - ggf. aus Variablen oder Zellwerten ermitteln
sPfad = "C:\Users\Admin\Documents\Auto_Versicherung"
sName = "AXA-Autoversicherung Preise ab 20120101-20111031.pdf"
'  AnwID = Shell("C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe", 1)
AnwID = Shell("C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" _
& " """ & sPfad & Application.PathSeparator & sName & """", 1)
'  AppActivate "Adobe Reader" 'funktioniert nur wenn in Acrobat Reader kein Dokument _
geöffnet ist
AppActivate sName & " - Adobe Reader" 'Fenster-Titel in Acrobat vollständig
'  AppActivate AnwID 'funktioniert nur wenn Acrobat Reader noch nicht geöffnet ist
SendKeys "%{D}", True     ' Datei-Menü
SendKeys "k", True        ' Drucken-Dialog
SendKeys "{ENTER}", True  ' OK
Application.Wait Now + TimeSerial(0, 0, 4) '4 Sekunden warten
SendKeys "%{D}", True     ' Datei-Menü
SendKeys "e", True        ' Beenden - Acrobat
Fehler:
With Err
Select Case .Number
Case 0 'Alles ok
Case 5 'ungültiger Prozedur aufruf - AppActivate findet Anwendungstitel nicht
'Resume Next  ' funktioniert nicht, da Kontrolle an Excel zurückgegeben wird
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Fehler bei Aufruf von Acrobat Reader"
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige
AW: SendKeys
18.12.2011 19:10:32
ing.grohn
Hallo Franz,
Word macht jetzt genau das, was es machen soll!
Mit Deiner Routine öffnet sich der Reader mit der Datei,
das Programm bleibt mit Fehler 5 an der Zeile
 AppActivate sName & " - Adobe Reader" 

hängen.
Die Unterschiede zu Deinem Programm sind der Pfad,
die Datei (logisch) und die Reader Version (bei mir 10)
Hast Du ne Idee?
Mit freundlichen Grüßen
Albrecht
PS ich hab die anderen Varianten für AppA... probiert, nichts!
AW: SendKeys
18.12.2011 21:04:14
ing.grohn
Hallo Franz,
das Programm läuft jetzt auch bei mir!
zwischen Shell und AppActivat habe ich ein Wait von 10 Sek. eingebaut
und AppActivat "Adobe Reader" so benannt.
Auch die Wartezeit zwischen drucken und Ende habe ich erhöht.
Ergebnis: läuft, aber .. (ich kanns auch vom Bildschirm abschreiben)
Ich werde versuchen die Formularfeldnamen der PDF's zu erfahren und dann mit .fdF Dateien
weiter versuchen oder die Formulare direkt in Word erstellen (es sind nur 2).
So ist das zu langsam (noch langsamer als das, was ich bisher gemacht habe:
Formular eingescannt, als Bildhintergrund in Word abgelegt und die Formularfelder drüber gelegt)
Ich dachte, wenn ich auf die Grafik verzichte, bin ich schneller!
Mal sehn wien weiter geht!?
Vielen Dank
Mit freundlichen adventlichen Grüßen
Albrecht
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige