kikimiki
Goto Top

Send Key von Outlook funktioniert nur manchmal

Hallo,

über ein Skript wird eine xls an eine neue Email gehängt und an definierte Empfänger geschickt.
Mein Ziel ist es dies vollautomatisiert zu machen.

Eigentlich klappt es wenn die Sicherheitswarnung in Outlook nicht wäre. Hier muss ich dann am Ende immer auf JA klikcken damit zugegriffen werden kann.


Meine aktuelle Lösung simuliert am Ende ein ein ALT+S, so wird die Mail sofort losgeschickt.


Am Anfang klappte das prima, doch mittlerweile hab ich festgestellt dass wenn ein anderes Fenster aktiviert ist dass dieses SendKey nicht funktioniert


Es funktioniert nur wenn kein anderes Fenster aktiviert ist.

Jemand eine Idee wie man das umgehen kann?
Hier der Code:


Const olByValue = 1
Const olMailItem = 0

Dim oOApp
Dim oOMail
Dim WshShell

Set oOApp = CreateObject("Outlook.Application")  
Set oOMail = oOApp.CreateItem(olMailItem)

oOMail.display ' Fenster anzeigen  
oOMail.To = "User1@email.de;User2@email.de"  
oOMail.CC = "reporting@email.de"  
oOMail.Subject = "Automatisierter Report"  
oOMail.Body = "Im Anhang befindet sich Report"  
oOMail.Attachments.Add (SkriptPfad & "Report.doc"), olByValue, 1  

'oOMail.Send '<< dieser Befehl würde die Warnung anzeigen  

Set WshShell = WScript.CreateObject("WScript.Shell")  
WshShell.AppActivate oOMail
WshShell.SendKeys("%s") ' Sende ein "Alt-S". Outlook denkt der User "sendet  

Content-ID: 126775

Url: https://administrator.de/contentid/126775

Ausgedruckt am: 15.11.2024 um 05:11 Uhr

TsukiSan
TsukiSan 09.10.2009 um 08:03:56 Uhr
Goto Top
Wie wär's denn mit
'.......  
oOMail.Send
?

Die Warnung kommt aus den Sicherheitseinstellungen her, vom Outlook.
Mit der SendKey-Methode hast du die Schwachstelle schon aufgeführt.
Ansonsten müssten Zusatztools runtergeladen werden und dann geht sowas
auch als Batch-Datei. Aber Zusatztools.....

Gruß
Tsuki
KikiMiki
KikiMiki 09.10.2009 um 08:09:12 Uhr
Goto Top
Hi Tsuki

Zusatztool darf ich in der Firma nicht einsetzten ;)
In meinem Code steht doch:
WshShell.AppActivate oOMail 

Dann müsste doch das Fenster der neuen Email automatisch aktiviert werden.

Ich versteh das nicht, wenn vor dem ausführen des Codes kein Fenster aktiviert ist geht es mit dem SendKey
Ist aber z.B. ein Word-Dokumennt oder ein Bild auf meinem Rechner aktiviert poppt die neue Email nur in der Taskleiste auf und ich muss es händisch abschicken mit Klick auf Senden.

Eine Idee?
KikiMiki
KikiMiki 09.10.2009 um 08:23:50 Uhr
Goto Top
So gehts:

Set oOApp = CreateObject("Outlook.Application")  
Set oOMail = oOApp.CreateItem(olMailItem)

oOMail.display ' Fenster anzeigen  
oOMail.To = "xyz@mail.de"  
oOMail.CC = "report@mail.de"  
oOMail.Subject = "Automatisierter Report"  
oOMail.Body = "Text"  
oOMail.Attachments.Add (SkriptPfad & "Report.doc"), olByValue, 1  

'oOMail.Send '<< dieser Befehl würde die Warnung anzeigen  

Set WshShell = WScript.CreateObject("WScript.Shell")  
WScript.Sleep 500
WshShell.AppActivate oOMail
WScript.Sleep 500
oOMail.display ' Fenster anzeigen  
WScript.Sleep 500
WshShell.SendKeys("%s") ' Sende ein "Alt-S". Outlook denkt der User "sendet  
TsukiSan
TsukiSan 09.10.2009 um 08:32:47 Uhr
Goto Top
mh,

gibt es die
oOApp.SetFocus
???

Jetzt müßten wir mal googeln, wie man einem bestimmten Fenster/Programm den Focus per VBS verpasst.

Gruß
Tsuki
TsukiSan
TsukiSan 09.10.2009 um 08:35:22 Uhr
Goto Top
Ah, warst schneller.

Super, dass du die Lösung gefunden hast!

Gruß
Tsuki
KikiMiki
KikiMiki 09.10.2009 um 08:47:09 Uhr
Goto Top
Trotzdem Danke
Das Forum hier ist echt der Hammer

Ihr habt mir schon so oft gehlfen. Hut ab an alle!!! ;)