Excel-VBA-Code zum abrufen von e-mails aus outlook
Bin ich zu schreiben ein VBA-code, der ermittelt werden E-Mails aus Outlook, basierend auf bestimmten Bedingungen. Das problem, das ich habe ist, dass ich haben, um eine bestimmte Ordner in meinem code (im untenstehenden Beispiel wird der Ordner bezeichnet, ist "VOR Kunde". Ich möchte ermittelt werden alle E-Mails von meinem 'Posteingang' oder im besseren Fall aus allen outlook-Ordnern. Das problem ist, dass mein Posteingang besteht aus vielen Unterordnern (da rules0. Mein problem ist, dass ich kann nicht wissen, alle Unterordner-Namen (wie bei vielen Usern gehen, um das makro zu verwenden und noch jemand haben kann, der e-mails in Persönlichen Ordnern).
Könnten Sie bitte beraten, ist es ein Weg, um dieses problem zu überwinden?
Bitte lassen Sie mich wissen, wenn diese Frage ist ungenau (ich bin Neuling)
Bitte suchen Sie die Zeile, die ich habe probelm mit mit einem Kommentar markiert.
Sub GetFromInbox()
Dim olApp As Outlook.Application
Dim olNs As Namespace
Dim Fldr As MAPIFolder
Dim olMail As Variant
Dim i As Integer
Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
'Below is the line I have problem with
Set Fldr = olNs.GetDefaultFolder(olFolderInbox).Folders("PRE Customer")
i = 1
x = Date
For Each olMail In Fldr.Items
If InStr(olMail.Subject, "transactions") > 0 _
And InStr(olMail.ReceivedTime, x) > 0 Then
ActiveSheet.Cells(i, 1).Value = olMail.Subject
ActiveSheet.Cells(i, 2).Value = olMail.ReceivedTime
ActiveSheet.Cells(i, 3).Value = olMail.SenderName
i = i + 1
End If
Next olMail
Set Fldr = Nothing
Set olNs = Nothing
Set olApp = Nothing
End Sub
InformationsquelleAutor Artur Rutkowski | 2014-05-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach eine Schleife durch alle Ordner in
Inbox
.So etwas wie dies funktionieren würde.
Edit1: Dies wird zur Vermeidung von leeren Zeilen.
Oben und kümmert sich um alle Unterordner in
Inbox
.Ist es das, was du versuchst?
Hi, die Ausgänge mit den richtigen Daten, aber in dem Ort gibt es keine e-mails mit Bedingungen gibt es eine leere Stelle in Excel, die Ergebnisse, dass es leere Zeilen zwischen der abgerufenen e-mails.ABE Vielleicht haben Sie Idee wie kann ich dies beheben?
Fix Leer Zeilen: Bewegen Sie den
j = j + 1
bis 2 Linien.Siehe mein edit. Direkt auf die Letzte leere Zeile möglich ist der beste Weg.
Ich weiß, ich bin ein bisschen spät zur party, aber gerade versucht, und es Stoppt bei 269 Zeilen, ich hab zwar keine Idee für das Leben von mir, warum. Irgendwelche Gedanken?
InformationsquelleAutor L42
Korrektur der Fehler (olFolderInbox ist ein Outlook nur konstant, so dass Sie brauchen, um zu definieren, es in vba nicht für Outlook):
Auch um zu verhindern, dass fehlende Referenz bei der Ausführung von einem anderen computer aus, würde ich:
Vielleicht wollen Sie auch zu deaktivieren ScreenUpdating, dann aktivieren Sie es in Excel, wenn Sie erwarten, eine lange Liste.
UPDATE (Lösung für alle Ordner vom Root-Ordner)
Benutzte ich etwas anderes für den Vergleich der Daten.
Sie tun kann rekursiv in allen Ordnern im Posteingang, aber Sie müssen wissen, den Pfad des Ordners in Excel? Oder EntryID, wenn Sie verweisen möchten es später?
Ich brauche nur die e-mails, die Eigenschaften (Betreff, Zeit aus), egal aus welchem outlook-Ordner, nur mit zusätzlichen Bedingungen wie "Wort" im Betreff und für heute (ich will, dies zu tun, überprüfen Sie das heutige Datum, um zu unmittelbaren dont, überprüfen Sie, ob das Datum nicht "heute")
Versuchen Sie die aktualisierte code für rekursive Modus erhält eine root-Ordner.
Dies kann einen Fehler erzeugen, wenn
olMail
innerhalb derolFldr
ist nicht einMailItem
. +1, obwohl fürLateBinding
da dies von mehreren Benutzern verwendet werden, da die OP-Punkte aus. Beseitigen einen Unterschied in den Versionen.InformationsquelleAutor PatricK