Dies ist eine Folge zu einer previous question, die ich gefragt hatte. Danke an die Community für Ihre Hilfe.Die Variable Application_Startup verschwindet nach der Unterbearbeitung
Ich versuche WithEvents Code zum ersten Mal zu erstellen, um einen Ordner auf neue Elemente zu überprüfen. Eventueller Plan ist es, das ItemsAdd-Ereignis zu verwenden, um eine Reihe anderer Prozesse auszulösen, aber für den Moment versuche ich nur, es in einem Ordner zu speichern und nicht so weit zu kommen.
Wenn ich den Application_Startup-Code unten ausführen, zeigt das unmittelbare Fenster, dass ich das richtige ClntFldrItms gefunden habe. Problem ist, wenn ich dann ein Element in den betreffenden Ordner ziehen, wird das ItemAdd-Makro nicht ausgelöst. Wenn ich versuche, eine Überwachung für clntFldrItms hinzuzufügen, wird die Variable nicht auf nichts gesetzt. Es sieht so aus, dass sobald die Application_Startup-Sub beendet ist, die Zuweisung beendet wird.
Der gesamte Code befindet sich im ThisOutlookSession-Objekt.
Könnte das sein, weil ich mit einer SMTP-E-Mail-Adresse arbeite (anstatt zum Beispiel Exchange)?
Nochmals vielen Dank für Ihre Hilfe.
EDIT Hinzufügen meiner Antwort auf Eugene Kommentar. Ich habe bemerkt, dass, wenn ich den Editor öffne und in den Application_Startup Sub gehe, clntFlodrItms korrekt zugewiesen wird, sogar bevor ich die Zeile ClntFldritms = clntFldr.Items setze. Sobald ich fertig bin, ist es wieder weg. Ich kann nicht in das ItemAdd-Sub springen, aber wenn ich in einen anderen Code eintrete, ist ClntFldrItms Nichts.
FINAL EDIT Tut mir leid, ich weiß, ich habe vergessen, das zu schließen. Ich war nicht in der Lage, das Problem per se zu lösen, aber ich erkannte, dass es an meinem SMTP-Konto lag. Als ich es bei der Arbeit mit Exchange versuchte, funktionierte es. Es scheint, dass das Ereignis nicht ausgelöst wird, wenn ich nicht in Exchange arbeite.
Option Explicit
Public WithEvents clntFldrItms As Outlook.Items
Private Sub Application_Startup()
Dim clntFldr As MAPIFolder
Set clntFldr = Application.Session.GetDefaultFolder(olFolderSentMail).Folders("Client Emails")
Set clntFldrItms = clntFldr.Items
Set clntFldr = Nothing
Debug.Print clntFldrItms.item(1).Subject
End Sub
Private Sub clntFldrItms_ItemAdd(ByVal item As Object)
Dim bChar As String
bChar = "\/:*?™""® <>|.&@#_+`©~;-+=^$!,'" & Chr(34)
Dim saveName As String
If item.Class = olMail Then
saveName = item.Subject
For x = 1 To Len(bChar)
saveName = Replace(saveName, Mid(bChar, x, 1), "-")
Next x
item.SaveAs "C:\Users\User\Google Drive\8 - VBA work\Preparation for Assisted Responder\Sent Messages Folder\" & _
saveName & ".msg", olMSG
End If
End Sub
Können VBA-Makros in Outlook ausgeführt werden? Hatten Sie die Möglichkeit, die Einstellungen für das Trust Center zu überprüfen? –
Dank Eugene, ich habe bereits eine Reihe von Makros in meiner Outlook-Sitzung ausgeführt. Kein Würfel ... – PKB
Ich habe den Code zur Arbeit genommen und es scheint auf Outlook 2010 und Microsoft Exchange zu arbeiten, so dass das Problem für mich gelöst ist. Ich weiß nicht, ob das Problem mit Outlook 2016 oder der SMTP-E-Mail-Adresse ist, aber ich vermute letzteres. Glücklich für Ideen, aber wenn niemand hat, danke für den Versuch. Prost – PKB