Guten Morgen,
wir besitzen ein Makro im akt. Office 365 (klassik, nicht "neu"), welches ein ausgewähltes Mail kopiert, diese eine Kategorie zuweist, als gelesen markiert, speichert (sonst sind die davor gesetzten Punkte nicht vorhanden) und anschließend in einen Ordner verschiebt den der User davor ausgewählt hat.
Das funktionierte eine Weile ganz gut, bis eines Tages der Laufzeitfehler '-2147221239 (80040109)' kam. Nur bei gewissen Usern kommt dieser Fehler hin und wieder, wenn jemand anderer versucht die Mail abzulegen funktioniert es. Der User selbst kann es so oft probieren wie sein Herz begehrt, immer mit dem gleichen Ergebnis. Es gibt User die verwenden Windows 10 und welche mit 11.
Google half mir leider nicht wirklich weiter, es kam eigentlich nur diese Seite: learn.microsoft.com (Objektmodell mit einem IMAP-Konto), so richtig schlau daraus bin ich leider auch nicht geworden. Ich habe hier herausgelesen, dass man ggf. eine gewisse Zeit "warten" sollte, bevor man speichert. Eine Funktion die mit "DoEvents" z.B. 0,1 Sekunden wartet. Vielleicht ist das auch zu wenig Zeit, für mich klang das aber eigentlich nach genug Zeit um einen PC arbeiten zu lassen. Hat nur leider nicht geholfen... Jedoch vielelicht verstehe ich den Inhalt dieser Seite auch falsch?
Lange rede kurzer Sinn, siehe unterhalb der Code-Bereich wo der Laufzeitfehler vorkommt inkl. Zusatzinformationen:
[...]
Dim oMail As Object ' das markierte Element in Outlook muss nicht immer ein E-Mail sein -> Objekt
Dim oCopyFolder As Object ' User input in welchen Ordner in Outlook das Mail kopiert werden soll
[...] User Input für Ordnerauswahl
If oMail.Class = olMail Then
Dim oMailItem As Outlook.MailItem
Dim oCopyMail As Outlook.MailItem
Set oMailItem = oMail
Set oCopyMail = oMailItem.Copy
oCopyMail.Categories = "Kopie"
oCopyMail.UnRead = False ' als gelesen markieren
WasteTime (0.1)
oCopyMail.Save ' die obrigen Änderungen in der Mail speichern // hier kommt der Laufzeitfehler
oCopyMail.Move oCopyFolder ' kopiertes Mail in den ausgewählten Ordner schieben
Set oMailItem = Nothing
Set oCopyMail = Nothing
ElseIf oMail.Class = 54 Or oMail.Class = 181 Or oMail.Class = 53 Or oMail.Class = 55 Or oMail.Class = 56 Or oMail.Class = 57 Then ' Meetings (Appointments sind Kalendereinträge)
Dim oMeeItem As Outlook.MeetingItem
Dim oCopyMee As Outlook.MeetingItem
Set oMeeItem = oMail
Set oCopyMee = oMeeItem.Copy
oCopyMee.Categories = "Kopie"
oCopyMee.UnRead = False ' als gelesen markieren
WasteTime (0.1)
oCopyMee.Save ' die obrigen Änderungen des Termins speichern // für einen Termin ist es noch nicht passiert
oCopyMee.Move oCopyFolder ' kopierter Termin in den ausgewählten Ordner schieben
Set oMeeItem = Nothing
Set oCopyMee = Nothing
Else ' als Sicherheit vorhanden, sollte eigentlich nie vorkommen (nur Mails und Termine aus einem Posteingang sollten abgelegt werden)
Dim oCopyObj As Object
Set oCopyObj = oMail.Copy
oCopyObj.Categories = "Kopie"
oCopyObj.UnRead = False ' als gelesen markieren
WasteTime (0.1)
oCopyObj.Save ' die obrigen Änderungen in des Objektes speichern
oCopyObj.Move oCopyFolder ' kopiertes Objekt in den ausgewählten Ordner schieben
Set oCopyObj = Nothing
End If
[...] Wenn Anhänge vorhanden werden diese entsprechend gespeichert
"WasteTime" ist eine Funktion die mit einem Timer, Schleife und DoEvents die angegebenen Sekunden abwartet. Also in diesem Fall wartet es immer 0,1 Sekunden, bevor die nächste Zeile Code ausgeführt wird.
Ursprünglich hatte ich das komplette If-Statement nicht und habe alles wie das Else darin ausgeführt. Die Idee das nun so aufzusplitten war, dass mit jemand den Input gegeben hat Objekt Variablen nur kurz zu verwenden. Zumal diese teilweise zu Problemen führen, so wie das beschriebene von mir. Leider hat das Umschreiben nicht geholfen, daher bin ich nun hier mit meiner Bitte um Hilfe, oder einen Input der mich ggf. auf den richtigen Weg bringen könnte das Problem zu lösen, hier gelandet.
Das das ganze ggf. am PC des Users oder div. Rechteeinstellungen in Windows liegen könnte, dieser Idee bin ich ebenfalls nachgegangen und bis dato über nichts gestolpert das es sein könnte. Das Verwirrende ist ja eher, dass es die meiste Zeit funktioniert ohne Faxen zu machen und nicht alle User betrifft.
LG, Nino
PS.: Ich hoffe die Formatierung hat einigermaßén funktioniert.
|