mreske
Goto Top

Outlook VBA Gesendete Email in Aufgabe anlegen

Hallo zusammen,
ich kenne mich mit Outlook VBA noch nicht so gut aus und bräuchte Hilfe:

Ich möchte nach dem Senden (egal, ob neue Mail oder beantwortete bzw. weitergeleitete EMail)
a. Eine neue Aufgabe anlegen
b. In der Aufgabe soll der Betreff = der Betreff der gesendeten Email sein
c. Im Body der Aufgabe soll die gesendete Email eingefügt werden

Mein Code legt aber nicht die SOEBEN versendete Mail in die Aufgabe,
sondern die vorletze Mail.

Könnte mir vielleicht jemand sagen, was ich hier falsch mache?

Public Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

'Msgbox Abfrage  
Select Case MsgBox("Aufgabe anlegen", vbYesNo + vbQuestion, "Aufgabe zur Mail")  

'Wenn mit "Ja" bestätigt  
Case vbYes

Dim strSubject As String
Dim strFrom As String
Dim strTo As String
Dim strCC As String

Dim oAccount As Outlook.Account
Dim outl, Task As Object
Dim olApp As Object, objMail As Object

strSubject = Item.Subject 'Email Betreff  
strFrom = Item.SendUsingAccount 'Absender  
strTo = Item.To 'Empfänger  
strCC = Item.CC 'Empfänger im CC  

Set outl = CreateObject("Outlook.Application")  
Set Task = outl.CreateItem(3)
Set Item = ActiveInspector.CurrentItem

'Aufgabe erstellen  
Task.Subject = strSubject 'Aufgabenbetreff soll den gleichen Namen haben, wie der Email-Betreff  
Task.Body = _
Date & vbTab & "Von: " & strFrom _  
& Chr(13) & vbTab & vbTab & "An: " & strTo _  
& Chr(13) & vbTab & vbTab & "CC: " & strCC _  
& Chr(13)
'Die soeben versendete Email in die Aufgabe kopieren  
Set olApp = GetObject(, "OutLook.Application")  
Set objMail = olApp.Session.GetDefaultFolder(5).Items.GetLast
'MsgBox objMail  
Task.Attachments.Add objMail

'Wichtigkeit Hoch (2 = Hoch, 1 = normal, 0 = niedrig)  
Task.Importance = 2
Task.StartDate = Date 'heute  
Task.DueDate = Date 'heute  
Task.Display

Case vbNo 'Wenn mit "Nein" bestätigt wurde  
End Select
End Sub

Danke im Voraus.
LG

Content-ID: 661813

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

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

beidermachtvongreyscull
beidermachtvongreyscull 12.03.2021 aktualisiert um 08:35:39 Uhr
Goto Top
Moin,

ich mutmaße auf die Schnelle, aber Du feuerst dieses Makro beim Senden einer E-Mail und nicht danach.
Public Sub Application_ItemSend

Wenn eine E-Mail gesendet wird, liegt sie erst im Postausgang und danach im "Gesendete Objekte"-Ordner.

Ich würde eine Warteschleife einbauen, die ca. 5 Sekunden verzögert. Das sollte reichen.

Gruß
bdmvg
mreske
mreske 12.03.2021 um 08:58:53 Uhr
Goto Top
Hallo und danke für die Antwort
ich probiere es dann mal mit

Application.Wait Now + TimeSerial(0, 0, 5)

Danke
mreske
mreske 12.03.2021 um 09:09:32 Uhr
Goto Top
Leider kommt dann die Fehlermeldung:
Laufzeitfehler '438':
Objekt unterstützt diese Eigenschaft oder Methode nicht.

2021-03-12_090912
beidermachtvongreyscull
beidermachtvongreyscull 12.03.2021 aktualisiert um 09:20:21 Uhr
Goto Top
Probiere es so:

Application.Wait(Now + TimeValue("0:00:05"))  
mreske
mreske 12.03.2021 um 09:55:17 Uhr
Goto Top
Leider kommt immer noch die selbe Fehlermeldung
147669
Lösung 147669 12.03.2021 aktualisiert um 10:27:45 Uhr
Goto Top
Ihr denkt hier viel zu kompliziert, denn an das ItemSend Event wird ja die zu sendende Mail bereits als Parameter in der Variable Item übergeben, also kann diese direkt genutzt werden um sie als Attachment hinzuzufügen face-wink, außerdem sind da einige überflüssige Schnippsel enthalten wie z.B. das Erstellen eines Outlook-Objekts denn das Event selbst läuft ja schon in Outlook, also kann man hier das Application Objekt benutzen statt ein neues Objekt zu erstellen

Public Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    'Msgbox Abfrage  
    Select Case MsgBox("Aufgabe anlegen", vbYesNo + vbQuestion, "Aufgabe zur Mail")  
        'Wenn mit "Ja" bestätigt  
        Case vbYes
        
            Dim strSubject As String
            Dim strFrom As String
            Dim strTo As String
            Dim strCC As String
            Dim Task As TaskItem
            
           ' Item vorher speichern damit es eine gültige ID im Outlook-Store hat und damit dann auch korrekt als Attachment im Task landet  
            Item.Save
            
            strSubject = Item.SUBJECT 'Email Betreff  
            strFrom = Item.SendUsingAccount 'Absender  
            strTo = Item.To 'Empfänger  
            strCC = Item.CC 'Empfänger im CC  
            
            Set Task = Application.CreateItem(olTaskItem)
            
            'Aufgabe erstellen  
            Task.SUBJECT = strSubject 'Aufgabenbetreff soll den gleichen Namen haben, wie der Email-Betreff  
            Task.Body = _
            Date & vbTab & "Von: " & strFrom _  
            & Chr(13) & vbTab & vbTab & "An: " & strTo _  
            & Chr(13) & vbTab & vbTab & "CC: " & strCC _  
            & Chr(13)

            Task.Attachments.Add Item
            
            'Wichtigkeit Hoch (2 = Hoch, 1 = normal, 0 = niedrig)  
            Task.Importance = 2
            Task.StartDate = Date 'heute  
            Task.DueDate = Date 'heute  
            Task.Display
            
        Case vbNo 'Wenn mit "Nein" bestätigt wurde  
        
    End Select
End Sub
Gruß SK
beidermachtvongreyscull
beidermachtvongreyscull 12.03.2021 um 10:22:08 Uhr
Goto Top
Danke für den Augenöffner. face-big-smile
mreske
mreske 12.03.2021 um 20:11:39 Uhr
Goto Top
Vielen Dank,
funktioniert perfekt
Beste Grüße und schönes Wochenende!
waasges
waasges 29.07.2022 um 15:25:46 Uhr
Goto Top
Hallo zusammen,

ich muss das Thema noch einmal hochholen und eine Frage loswerden...

Ich habe Outlook365 in der Firma und den o. g. VBA Code in Outlook hinterlegt.
Am ersten Tag hat er wunderbar funktioniert. Seit dem 2. Tag kommt die Abfrage nicht mehr.

Ich habe leider noch nicht herausfinden können, weshalb das so ist...und hoffe, dass Ihr mir helfen könnt.

Benötigt Ihr noch weitere Informationen, dann schreibt hier kurz. Vorab schon mal vielen Dank und ein schönes Wochenende. face-smile

Marco
3479126418
3479126418 29.07.2022 aktualisiert um 15:30:57 Uhr
Goto Top
Am ersten Tag hat er wunderbar funktioniert. Seit dem 2. Tag kommt die Abfrage nicht mehr.
Dann hat dir das Security-Center/GPO/etc. die Makros unter dem A.... weggezogen und wieder deaktiviert face-wink.
waasges
waasges 29.07.2022 um 15:35:08 Uhr
Goto Top
Zitat von @bangalore:

Am ersten Tag hat er wunderbar funktioniert. Seit dem 2. Tag kommt die Abfrage nicht mehr.
Dann hat dir das Security-Center/GPO/etc. die Makros unter dem A.... weggezogen und wieder deaktiviert .

Das stimmt wohl 😬 Oh je, das hatte ich noch gar nicht in Betracht gezogen. Nun funktioniert es anscheinend wieder.

Danke für den Hinweis. 😊