Mehrere E-Mails in Termine im Kalender umwandeln
Hallo
Ich suche folgende VBA-Makro-Möglichkeit:
Ist so ein Script überhaupt machbar?
Sieht jemand eine andere Lösung?
Wie man mehrere Termin in Aufgaben konvertiert, habe ich z.B. da gefunden: Mehrere Termine in Aufgaben konvertieren
Für Hilfen bin ich dankbar.
Ich suche folgende VBA-Makro-Möglichkeit:
- Eine oder mehrere E-Mail/s manuell markieren und per Makro in einzelne Outlook-Termine umwandeln und diese dann in einen fest zugeordneten oder wählbaren Kalender ablegen.
- Das Datum des E-Mail-Eingang (empfangen) sollte das (Start)datum des Termins (empfangen am) sein.
- Die Zeit des E-Mail-Eingang sollte die Startzeit des Termins (empfangen um) sein.
- Die Dauer des Termins sollte standardmässig 5 Min. betragen (Die Zeit könnte man dann im Termin noch manuell nach Bedarf anpassen) oder wählbar sein.
Ist so ein Script überhaupt machbar?
Sieht jemand eine andere Lösung?
Wie man mehrere Termin in Aufgaben konvertiert, habe ich z.B. da gefunden: Mehrere Termine in Aufgaben konvertieren
Für Hilfen bin ich dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 14102448872
Url: https://administrator.de/forum/mehrere-e-mails-in-termine-im-kalender-umwandeln-14102448872.html
Ausgedruckt am: 24.12.2024 um 19:12 Uhr
6 Kommentare
Neuester Kommentar
Servus @Techstrator !
Hier ein Beispiel wie so etwas aussehen könnte (Kommentare s. Code):
Das solltest du auf deine weiteren Bedürfnisse zuschneiden können.
Grüße Uwe
Ist so ein Script überhaupt machbar?
Ja das ist problemlos möglich.Hier ein Beispiel wie so etwas aussehen könnte (Kommentare s. Code):
Sub CreateAppointmentsFromSelectedMails()
Dim itm As Object, folderDestination As folder
With ActiveExplorer
' if there is at least 1 selected mail ...
If .Selection.Count > 0 Then
' ask user to select the destination folder
Set folderDestination = Application.Session.PickFolder
' if not folder was choosen exit sub
If folderDestination Is Nothing Then Exit Sub
' check folder type of type to be a calendar folder
While folderDestination.DefaultItemType <> olAppointmentItem
MsgBox "Bitte einen Ordner vom Typ Kalender wählen!", vbExclamation
Set folderDestination = Application.Session.PickFolder
If folderDestination Is Nothing Then Exit Sub
Wend
' for each item in selection
For Each itm In .Selection
' only process items of type "e-mail"
If itm.Class = olMail Then
' create new appointment with details of mailitem
With Application.CreateItem(olAppointmentItem)
' assign subject
.subject = itm.subject
' assign body
.Body = itm.Body
' set start time to received time of mail
.Start = itm.ReceivedTime
' set end time of appointment to recivedtime + 5 minutes
.End = DateAdd("n", 5, itm.ReceivedTime)
' do not set a reminder
.ReminderSet = False
' save appointment item in destination folder
.Move folderDestination
End With
End If
Next
Else
' user selected no mails
MsgBox "Bitte mindestens eine E-Mail auswählen!", vbExclamation
End If
End With
End Sub
Grüße Uwe
Bin zwar nicht mehr am Rechner aber solltest du mit der Änderung dieser Zeile erreichen
Empfänger kann es ja mehrere geben, im Beispiel wird jetzt einfach nur die erste aus der Collection in den Betreff geschrieben.
Verfügbare Eigenschaften des MailItem-Objekts kannst du hier nachschlagen : MailItem-Objekt (Outlook)
Grüße Uwe
.subject = itm.Categories & " : E-Mail von/an " & itm.SenderEmailAddress & "/" & itm.Recipients(1).Address & " : " & itm.subject
Verfügbare Eigenschaften des MailItem-Objekts kannst du hier nachschlagen : MailItem-Objekt (Outlook)
Grüße Uwe
Frage: Wie kann ich den Code schreiben, dass der im Subject eingefügte Passus "itm.Categories" jeweils nur 9 Zeichen lang ist?
Wenn es immer nur eine Kategorie ist dann.subject = Left(itm.Categories,9) & " : E-Mail von/an " & itm.SenderEmailAddress & "/" & itm.Recipients(1).Address & " : " & itm.subject
Wenn mehrere angegeben wurden
Dim cat as String, c as String
If InStr(1,itm.Categories,";",1) > 0 then
For each c in Split(itm.Categories,";",-1,1)
cat = cat & Left(c,9) & "|"
Next
else
cat = Left(itm.Categories,9)
End if
.subject = cat & " : E-Mail von/an " & itm.SenderEmailAddress & "/" & itm.Recipients(1).Address & " : " & itm.subject