Outlook speichert Postsendungen, Kalendereinträge, Aufgaben und so weiter in Dateien nennt es Stores. Manchmal werden Postsendungen usw. in PST-Dateien gespeichert, was normalerweise der Fall ist. Alle PST-Dateien sind jedoch Speicher, aber nicht alle Speicher sind PST-Dateien.
Ich erinnere mich, als der Standardwert für Nachrichten war, die an eine Ihrer E-Mail-Adressen gesendet wurden, um in denselben Shop geladen zu werden. In dieser Situation war Set infldr = myNs.GetDefaultFolder(olFolderInbox)
nützlich, da sich der standardmäßige Posteingang in diesem einen Geschäft befand.
Mit Outlook 2016 und vielleicht einigen anderen aktuellen Versionen ist der Standard ein separater Speicher für jede E-Mail-Adresse. Jeder dieser Speicher ist nach der E-Mail-Adresse benannt, zum Beispiel: "[email protected]" oder "[email protected]".
Kopieren Sie diesen Makro zu einem Outlook-Modul und führen Sie es:
Sub DsplUsernameOfDefaultStore()
Dim NS As Outlook.NameSpace
Dim DefaultInboxFldr As MAPIFolder
Set NS = CreateObject("Outlook.Application").GetNamespace("MAPI")
Set DefaultInboxFldr = NS.GetDefaultFolder(olFolderInbox)
Debug.Print DefaultInboxFldr.Parent.Name
End Sub
Auf meinem System, das Makro gibt „Outlook-Datendatei“. Dies war der Standardspeicher, der mit Outlook geliefert wurde, aber keine meiner E-Mails wurde darauf geladen.
Sie müssen so etwas wie:
Set infldr = Session.Folders("Xxxx").Folders("Inbox")
wobei XXXX der Name des Ladens ist mit dem Posteingang Sie abfragen möchten.
Im Folgenden habe ich drei alternative Makros, die die Anzahl der wichtigen E-Mails in einem Posteingang zählen. Punkte der besonderen Anmerkung:
- Version 1 verwendet eine
For Each
Schleife, wie ich in meinem Kommentar vorgeschlagen. Version 2 verwendet eine For IndexVariable
-Schleife. Meines Wissens nach hat keiner der beiden Typen von For
einen Vorteil gegenüber dem anderen. Ich benutze, je nachdem, was für die Aufgabe bequemer erscheint. Version 3 verwendet einen Filter. Ich habe den Outlook-Filter nicht oft genug benutzt, um Experte in seiner Verwendung zu werden, deshalb verwende ich normalerweise eine For
-Schleife. olImportanceHigh
ist eine Konstante mit einem Wert von 2. Es scheint, dass Sie keine Konstante innerhalb einer Restrict
Zeichenfolge verwenden können, weshalb es [Importance] = 2
heißt.
- Ich finde
Debug.Print
viel bequemer als MsgBox
während der Entwicklung.
Komm zurück mit Fragen über meinen Code wie nötig.
Option Explicit
Sub CountHighImportanceEmails1()
Dim FldrInbox As Folder
Dim MailItemCrnt As MailItem
Dim NumEmailsHighImport As Long
Set FldrInbox = Session.Folders("Xxxx").Folders("Inbox")
NumEmailsHighImport = 0
For Each MailItemCrnt In FldrInbox.Items
If MailItemCrnt.Importance = olImportanceHigh Then
NumEmailsHighImport = NumEmailsHighImport + 1
End If
Next
Debug.Print "Number of high importance emails=" & NumEmailsHighImport
End Sub
Sub CountHighImportanceEmails2()
Dim FldrInbox As Folder
Dim InxMi As Long
Dim NumEmailsHighImport As Long
Set FldrInbox = Session.Folders("Xxxx").Folders("Inbox")
NumEmailsHighImport = 0
With FldrInbox
For InxMi = 1 To .Items.Count
If .Items(InxMi).Importance = olImportanceHigh Then
NumEmailsHighImport = NumEmailsHighImport + 1
End If
Next
End With
Debug.Print "Number of high importance emails=" & NumEmailsHighImport
End Sub
Sub CountHighImportanceEmails3()
Dim FldrInbox As Folder
Dim MailItemsHighImport As Items
Set FldrInbox = Session.Folders("Xxxx").Folders("Inbox")
Set MailItemsHighImport = FldrInbox.Items.Restrict("[Importance] = 2")
Debug.Print "Number of high importance emails=" & MailItemsHighImport.Count
End Sub
sein Sie sagen nicht, welche Anweisung den Fehler gibt, damit ich mich zu erwähnen, die offensichtlichen Probleme begrenzen. (1) Der standardmäßige Posteingang ist wahrscheinlich nicht der gewünschte Posteingang. Sie müssen wahrscheinlich explizit sein. (2) 'infldr.Items' ist eine Sammlung von MailItems, nicht ein MailItem. Du brauchst so etwas wie 'Für jeden impMail In infldr.Items'' Prüfe auf wichtige Postsendungen' 'Weiter'. –
Sie haben auch Ihre 'ttlcount'- und' ttlImp'-Variablen gemischt. Aber das größte Problem ist das Fehlen einer For-Schleife. – finjo
Ja Entschuldigung, ich bin noch ziemlich neu dazu und lerne. Das ist, was ich nach dem ganzen Tag versucht habe. Wie für die for-Schleife würde nicht eine Einschränkung oder ein Filter besser funktionieren? Ich bin mir nicht ganz sicher, wie Schleife, dass bis auf .. 'für jedes Element in folder.item' ' wenn item = Bedeutung (olimportanthigh) dann '' ttlcount = ttlcount +1 '' next' Entschuldigung, das ist ein wirklich grober Entwurf dessen, wie ich denke, dass es aussehen würde. – Jonboy89