Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung VB for Applications

GELÖST

Mit Excel VBA Outlook Posteingang nach Kennzeichnungsstatus auslesen

Mitglied: hellas

hellas (Level 1) - Jetzt verbinden

10.02.2015 um 14:11 Uhr, 1953 Aufrufe, 14 Kommentare

Hallo,

ich möchte gerne in einer Excel Liste alle Emails aus meinem Posteingang haben, die zur Nachverfolgung gekennzeichnet sind.

Mein Ansatz ist folgender:

Sub EmailRead()
Set olApp = CreateObject("outlook.application")
Set objfolder = olApp.GetNamespace("MAPI").GetDefaultFolder(6) ' 6 = olFolderInbox

Sheets("Tabelle1").Select
With ActiveSheet.UsedRange
.Value = Empty
End With

For a = 1 To objfolder.items.Count
If objfolder.items(a).unread = True Then '---- nur ungelesene

Cells(Cells(Rows.Count, "A").End(xlUp).Row + 1, 1).Value = objfolder.items(a).Subject

End If
Next a

Set objnSpace = Nothing
End Sub
Hier werden nun die Betreff Zeilen aller ungelesenen Nachrichten aufgelistet.
Ich habe aber noch keine Idee wie ich alle bekomme, die ein Nachverfolgungs-Flag gesetzt haben.

Kann mir da jemand helfen ?

Danke
Mitglied: colinardo
10.02.2015, aktualisiert um 14:52 Uhr
Hallo Hellas,
kein Problem machst du effektiver und schneller mit einem Restrict-Filter auf den Posteingang, dann müssen nicht alle Mails einzeln geprüft werden
Da du nicht weiter spezifiziert hast ob die Mails gleichzeitig Ungelesen und geflaggt sein müssen bin ich mal davon ausgegangen das sie beides haben müssen.
Ist das nicht der Fall kannst du das in Zeile 12 durch ändern des AND in ein OR abändern, dann werden sowohl ungelesene oder geflaggte Nachrichten übernommen.
01.
Sub EmailRead() 
02.
    Dim olApp as Object, objFolder as Object, mail as Object, rngCurrent as Range 
03.
    Set olApp = CreateObject("outlook.application") 
04.
    Set objFolder = olApp.GetNamespace("MAPI").GetDefaultFolder(6) ' 6 = olFolderInbox 
05.
     
06.
    With Sheets("Tabelle1") 
07.
        'Sheetinhalt löschen 
08.
        .UsedRange.Clear 
09.
        'Startausgabezelle setzen 
10.
        Set rngCurrent = .Range("A1") 
11.
        ' Mails auf ungelesene und gleichzeitig geflaggte beschränken 
12.
        For Each mail In objFolder.Items.Restrict("[Unread] = True AND [FlagRequest] = 'Zur Nachverfolgung'") 
13.
            rngCurrent.Value = mail.Subject 
14.
            ' Ausgabe eine Zeile nach unten verschieben 
15.
            Set rngCurrent = rngCurrent.Offset(1, 0) 
16.
        Next 
17.
    End With 
18.
    Set olApp = Nothing 
19.
    Set objFolder = Nothing 
20.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: hellas
10.02.2015 um 14:59 Uhr
Danke Uwe !

Es geht.... und auch wesentlich schneller als meine Lösung

Hab ich auch die Möglichkeit die Art der Kennzeichnung abzufragen ("Blaue Kennzeichnung", "Rote Kennzeichnung", "Als erledigt kennzeichnen") ?
Bitte warten ..
Mitglied: colinardo
10.02.2015, aktualisiert um 15:19 Uhr
Zitat von hellas:
Hab ich auch die Möglichkeit die Art der Kennzeichnung abzufragen ("Blaue Kennzeichnung", "Rote
Kennzeichnung", "Als erledigt kennzeichnen") ?
Du meinst die Kategorisierung ? Das ist ja was anderes als die Kennzeichnung.
Die Kategorie kann man in dem Restrict Filter leider nicht verwenden, aber du kannst den Filter so einstellen das erst mal gröber gefiltert wird und du dann zusätzlich mit einer IF-Abfrage die Kategorie überprüfst:
01.
if Instr(1,mail.Categories,"Blaue Kategorie",1) then 
02.
    '.... 
03.
end if
-edit- Schreibfehler korrigiert
Bitte warten ..
Mitglied: hellas
10.02.2015 um 15:18 Uhr
Ich arbeite ja noch mit Outlook 2003 da gab es die Trennung von Kategorien und Nachverfolgung noch nicht.

Wenn ich jetzt die Nachverfolgung setzte, kann ich zwischen "Roter kennzeichnung", "Blaue Kennzeichnung" etc... wählen.
Die würde ich auch noch gerne abfragen können.

Kategorien habe ich "nur" Feiertage, Favoriten, Geschäftlich usw...

Danke für deine Hilfe.
Bitte warten ..
Mitglied: colinardo
10.02.2015, aktualisiert um 15:22 Uhr
Zitat von hellas:
Ich arbeite ja noch mit Outlook 2003 da gab es die Trennung von Kategorien und Nachverfolgung noch nicht.
Ah OK.
Das kannst du ja im Filter festlegen:
[FlagRequest] = 'Blaue Kennzeichnung'
und bei Bedarf mehrere mit OR kombinieren wenn mehrere Gewünscht sind. Das Feld enthält ja die Kennzeichnung als simplen String.
Bitte warten ..
Mitglied: hellas
11.02.2015 um 08:24 Uhr
Hi,

funktioniert leider nicht
"Zur Nachverfolgung" geht aber "Blaue Kennzeichnung" erkennt er nicht.
Bitte warten ..
Mitglied: colinardo
11.02.2015, aktualisiert um 09:03 Uhr
Ich krame mal das Outlook 2003 aus der Schublade...
Bitte warten ..
Mitglied: colinardo
11.02.2015, aktualisiert um 12:13 Uhr
OK, die Eigenschaft in Outlook 2003 lautet FlagIcon. Diese kannst du ebenfalls nicht im Filter verwenden so dass du es mit einer If-Abfrage deiner gefilterten Mails machen musst (s. Zeile 13):
01.
Sub EmailRead() 
02.
    Dim olApp as Object, objFolder as Object, mail as Object, rngCurrent as Range 
03.
    Set olApp = CreateObject("outlook.application") 
04.
    Set objFolder = olApp.GetNamespace("MAPI").GetDefaultFolder(6) ' 6 = olFolderInbox 
05.
     
06.
    With Sheets("Tabelle1") 
07.
        'Sheetinhalt löschen 
08.
        .UsedRange.Clear 
09.
        'Startausgabezelle setzen 
10.
        Set rngCurrent = .Range("A1") 
11.
        ' Mails auf ungelesene und gleichzeitig geflaggte beschränken 
12.
        For Each mail In objFolder.Items.Restrict("[Unread] = True AND [FlagRequest] = 'Zur Nachverfolgung'") 
13.
           if mail.FlagIcon = 5 then 
14.
              rngCurrent.Value = mail.Subject 
15.
              ' Ausgabe eine Zeile nach unten verschieben 
16.
              Set rngCurrent = rngCurrent.Offset(1, 0) 
17.
           End if 
18.
        Next 
19.
    End With 
20.
    Set olApp = Nothing 
21.
    Set objFolder = Nothing 
22.
End Sub
Es gibt hier folgende Enumerations-Konstanten als Wert für FlagIcon:
https://msdn.microsoft.com/en-us/library/office/aa211991%28v=office.11%2 ...
olNoFlagIcon (0) 
olPurpleFlagIcon (1) 
olOrangeFlagIcon (2) 
olGreenFlagIcon (3) 
olYellowFlagIcon (4) 
olBlueFlagIcon (5) 
olRedFlagIcon (6)
Grüße Uwe
Bitte warten ..
Mitglied: hellas
11.02.2015 um 09:05 Uhr
Danke
Bitte warten ..
Mitglied: colinardo
11.02.2015, aktualisiert um 09:24 Uhr
Nicht vergessen den Beitrag noch auf gelöst zu setzen. Merci.
Bitte warten ..
Mitglied: hellas
11.02.2015 um 11:31 Uhr
Super funktioniert.
Ich musste die olBlueFlagTools ersetzen durch 5 und es geht.
Den Rest baue ich mir jetz darum.

Danke für die sehr kompetente Hilfe !!
Bitte warten ..
Mitglied: colinardo
11.02.2015, aktualisiert um 12:15 Uhr
Zitat von hellas:
Ich musste die olBlueFlagTools ersetzen durch 5 und es geht.
Stimmt mit der Konstanten geht es nur wenn du es in Outlook selber nutzt, hatte ich vergessen das dein Code in Excel läuft
Danke für die sehr kompetente Hilfe !!
Gerne
Bitte warten ..
Mitglied: karolson
02.06.2016 um 09:13 Uhr
Hallo colinado,
wie kann ich auch gleichzeitig den Inhalt von ungelesenen E-Mails in die andere Spalte ausgeben lassen? Danke
MfG
Bitte warten ..
Mitglied: colinardo
02.06.2016, aktualisiert um 10:31 Uhr
Einfach per Offset die Spalte neben dran ansprechen:
01.
 rngCurrent.Offset(0,1).Value = mail.Body
Alle Maileigenschaften findest du in der MSDN Referenz für Outlook...

Grüße Uwe

p.s. Bitte in Zukunft kein "Übernehmen" von Threads von anderen Usern mehr.Merci.
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
VBA zum auslesen von einem Zellbereich Excel
gelöst Frage von schwalbepilotMicrosoft Office1 Kommentar

Hallo, leider bin ich mit Makros noch nicht su vertraut. Ich habe in einen Ordner mehrere hunderte Datein. Alles ...

Microsoft Office
Excel VBA Datein auslesen
gelöst Frage von schwalbepilotMicrosoft Office8 Kommentare

Hallo, ich benutze MS Excel 2010 und bräuchte ein Makro, zum auslesen mehrerer Excel Datein. Diese befinden sich alle ...

Microsoft Office
Hyperlink in Excel per VBA auslesen
Frage von Grave111Microsoft Office2 Kommentare

Hallo und guten Abend zusammen, ich hätte ein kleines Problem und werde nicht wirklich fündig bei Google. Wie im ...

VB for Applications
Excel Liste mit vba auslesen und drucken
gelöst Frage von speedy132VB for Applications27 Kommentare

Hallo miteinander, Folgendes Problem: Ich habe eine Mitarbeiterliste mit Unterweisungsplan. Jetzt möchte ich einzelne MA markieren evtl. durch ein ...

Neue Wissensbeiträge
Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 12 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 13 StundenSicherheit7 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 13 StundenSicherheit8 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 14 StundenSicherheit12 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Heiß diskutierte Inhalte
Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1031 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell29 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen20 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...