Outlook VBA SendKeys

Tuts4you

Erfahrenes Mitglied
Hallo,

Ich weiss selber, dass "SendKeys" die absoulte Notlösung in VBA ist - und diese Variante ist es auch für mich.

Ich probier über Outlook den PDF Drucker anzusteuern und via SendKeys den Dateinamen zu übergeben, sodas der Benutzer keine Eingabe tätigen muss.

PHP:
Sub StartPrinting()

SendKeys "^p"
SendKeys "{TAB 5}"
SendKeys "a" 
SendKeys "{ENTER}" 

bis hier her funktioniert alles einwandfrei - doch jetzt öffnen sich der Acrobat Dialog

SendKeys "dateiname.pdf" 

End Sub
Mit ^p (STRG+p) öffne ich den Druckdialog. Mit {TAB 5} komme ich zur Druckerauswahl. a brauche ich für Adobe.
Wenn sich der Adobe Acrobat Druckdialog öffnen scheitert die letzte Routine. Der Dateiname kommt nicht mehr an.
In Excel kann ich Application.Wait (Now + ("00:00:02")) verwenden, aber was in Outlook? Ich hab schon alles nur erdenkliche ausprobiert

PHP:
Sub StartPrinting()

SendKeys "^p"
SendKeys "{TAB 5}"
SendKeys "a" 
SendKeys "{ENTER}" 
PleaseWait
SendKeys "dateiname.pdf"

End Sub

 Sub PleaseWait()
   
      Start = Timer
      Do While Abs(Timer - Start) < 1
          DoEvents
      Loop
      
  End Sub
Keine Chance Der Code wird nicht sukzessiv abgearbeitet

PHP:
Sub StartPrinting()

SendKeys "^p"
SendKeys "{TAB 5}"
SendKeys "a" 
SendKeys "{ENTER}" 
For i = 1 to 50
SendKeys " "
Next i
SendKeys "^a"
SendKeys "dateiname.pdf" 

End Sub
Mit dieser for-schleife (ich schicke 50 leerzeichen und überschreibe sie dann wieder) kommt der Dateiname tatsächlich an. Wenn ich aber dann auf Drucken klicke, hängt sich Adobe Acrobat entweder auf, oder beendet den Vorgang und speichert keine Datei.

Ich bin mit meinem Latein wirklich am Ende... Danke für eure Hilfe
 
Ich arbeite selten mit VBA. In VB6 mache ich das mit ShellExecute (so das gibt es in VBA aber meiner Meinung nach auch?).

Code:
ShellExecute Me.hwnd, "print", cTempFile, vbNullString, vbNullString, SW_SHOWNORMAL

Bei der Verwendung mit SendKeys hast Du natürlich immer dann, falls Du ein Update vom Acrobat Reader bekommst, in dem dummerweise der Dialog geändert wurde. Dann fängst Du wieder von vorn an.

Grüsse
ronaldh
 
Zurück