Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Outlook, eMail bei Eingang auf Absender + Betreff überprüfen

Frage Off Topic Papierkorb

Mitglied: 117974

117974 (Level 1)

22.09.2014, aktualisiert 29.09.2014, 1727 Aufrufe, 23 Kommentare

DoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDone
Mitglied: colinardo
LÖSUNG 22.09.2014, aktualisiert 26.09.2014
-edit- gelöscht, wegen Dummheit des TO
Bitte warten ..
Mitglied: 117974
22.09.2014, aktualisiert 26.09.2014
DoneDoneDoneDoneDoneDoneDoneDoneDoneDone
Bitte warten ..
Mitglied: colinardo
LÖSUNG 22.09.2014, aktualisiert um 12:43 Uhr
Zitat von 117974:
Zuerst, wie starte bzw. teste ich das? Im VBA Editor ein Modul erstellen, Code rein, F5? Funktioniert bei mir
nicht.
Nein, du fügst das ganze in den Abschnitt ThisOutlookSession oder DieseOutlookSitzung ein. Diese SUB ist eine Event-Prozedur die von Outlook jedes mal aufgerufen wird wenn eine oder mehrere neue Mails eintreffen. Es ist also keine Prozedur die du mit F5 aufrufen kannst! Schick dir zum Testen einfach mal selber ein paar Mails mit dem selben Betreff.
varEntryIDs werden zuerst verschiedene IDs zugewiesen die zu neuen E-Mails gehören?
Die EntryIDs werden von Outlook zugewiesen. Diese sind in Outlook eindeutige IDs, d.h. mit dieser lässt sich eine Mail identifizieren. Diese benötige ich aber nur um mir das Objekt der Mail zu holen, für sonst nichts. Da bei einem Event eben mehrere Mails gleichzeitig eintreffen können, sind diese mit dem NewMailEx-Event zu verarbeiten.
Dann iteriere ich über die IDs und hole mir zu jeder die E-Mail und füge sie dem objInbox Folder hinzu?
Nein. Ich iteriere über die IDs hole mir das Mailobjekt anhand der ID, und dann nochmal über alle Mails in der Inbox außer der Mail(mit der aktuellen ID) die gerade reingekommen ist.(Wir wollen ja nicht doppelt zählen)

Nun wird denke ich mal Betreff + Absender überprüft. Hier stellt sich mir die Frage wo die Überprüfung der
vorherigen Mails stattfindet. Es müsste ja theoretisch geschaut werden, ob in den letzten 90 Minuten 2 Mails mit den selben Informationen erhalten worden sind.
Das wird in Zeile 19 gemacht. Der Code überprüft ja für jede neu eingetroffene Mail erneut alle Mails in der Inbox.

Funktioniert hier soweit einwandfrei

p.s. ich habe dem Code noch Kommentare hinzugefügt...

Grüße Uwe
Bitte warten ..
Mitglied: 117974
22.09.2014 um 12:44 Uhr
Alles klar. Habe das jetzt einfach mal bei ThisOutlookSession hinzugefügt und mir e-Mails geschickt.
Beim Erhalt dieser in Outlook poppt ziemlich zeitgleich der Fehler "runtimerror 13, type missmatch"

Dazu ne Idee?

Gruß,
Christian
Bitte warten ..
Mitglied: colinardo
22.09.2014, aktualisiert um 12:50 Uhr
setze Breakpoints im VBA Editor und gehe dann mit F8 schrittweise den Code durch, dann weist du welche Zeile bei dir verantwortlich ist.
Bitte warten ..
Mitglied: 117974
22.09.2014 um 12:51 Uhr
Ja, das "Next" in Zeile 23 wird gelb markiert? Keine Ahnung, daran kann ja nicht viel falsch sein?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 22.09.2014, aktualisiert um 13:05 Uhr
Zitat von 117974:

Ja, das "Next" in Zeile 23 wird gelb markiert? Keine Ahnung, daran kann ja nicht viel falsch sein?
nein, das gelb markieren ist normal, du musst solange weiter F8 drücken bis die Fehlermeldung auftritt, in der Zeile die dann vor der Meldung aktiv war sollte der Fehler zu finden sein.
Zusätzlich lassen sich dort auch die Werte von Variablen überwachen.
Bitte warten ..
Mitglied: 117974
22.09.2014, aktualisiert um 13:01 Uhr
also er springt dabei immer in der IF bei 17, 19, 21, 22, 23 rum. Wenn ich immer weiter F8 drücke bewege ich mich da sozusagen im Kreis, ab und zu kommt dann beim Next in 23 der Fehler Type missmatch.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 22.09.2014, aktualisiert um 13:18 Uhr
Zitat von 117974:
also er springt dabei immer in der IF bei 17, 19, 21, 22, 23 rum. Wenn ich immer weiter F8 drücke bewege ich mich da
sozusagen im Kreis,
ist ja normal, ist ja eine Schleife les dich mal ins Debugging mit dem VBA Editor ein ... (F1 hilft da ungemein)
ab und zu kommt dann beim Next in 23 der Fehler Type missmatch.
habe oben nochmal was im Code abgeändert. Da scheint ein Element in deinem Posteingang kein Mailitem gewesen zu sein.
Bitte warten ..
Mitglied: 117974
22.09.2014 um 13:23 Uhr
Allllsoooo, habe mal Outlook inc. VBA Editor neugestartet und es scheint jetzt zu funktionieren ;)
Vielen Dank für deine Mühe!

Wäre es generell möglich für das Makro noch einen Einschalt/Ausschalt Button zu machen um es z.B. in der Nacht zu aktivieren bzw. Morgens zu deaktiveren?
Bitte warten ..
Mitglied: colinardo
22.09.2014, aktualisiert um 13:56 Uhr
Zitat von 117974:
Wäre es generell möglich für das Makro noch einen Einschalt/Ausschalt Button zu machen um es z.B. in der Nacht zu
aktivieren bzw. Morgens zu deaktiveren?
sicher, entweder man erstellt sich eine öffentliche Variable die man in einer Prozedur auf einen Wert setzt und diese dann im Event überprüft, oder man prüft im Event nach bestimmten Uhrzeiten. Z.b. so für eine Aktivierung zwischen 17 Uhr Abends und 8 Uhr Morgens:
01.
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)  
02.
   If Time > TimeValue("17:00:00") Or Time < TimeValue("08:00:00") Then 
03.
        '.... hier der Rest des obigen Codes 
04.
   End If 
05.
End Sub
Ich lass dir das andere mal als Hausaufgabe, wenn du c# beherrschst sollte das eigentlich kein Problem für dich sein

Grüße Uwe

Hier noch zum Start ein paar Links zu VBA/VBS:
VBA/VBS/WSH/Office Developer Referenzen
Bitte warten ..
Mitglied: 117974
22.09.2014, aktualisiert 26.09.2014
DoneDoneDoneDoneDoneDoneDoneDoneDone
Bitte warten ..
Mitglied: 117974
23.09.2014, aktualisiert 26.09.2014
DoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDone
Bitte warten ..
Mitglied: colinardo
LÖSUNG 23.09.2014, aktualisiert um 10:55 Uhr
EDIT: Läuft jetzt so wie ich das ungefähr wollte, kannst ja mal kurz drüber schauen, vllt. gehts ja schöner bzw. besser ;)
Schön das du's hinbekommen hast

Ja das ist eine Möglichkeit mit einer Custom-Form. Eine andere Methode wäre es in Outlook 2007 direkt nur mit einem einzigen Button auf der Symbolleiste von Outlook zu machen der je nach Status seine Beschriftung ändert.
Das ginge dann folgendermaßen:

Prozedur für das Erstellen des Buttons (den Button also bitte nicht manuell erstellen)
01.
Sub CheckButton() 
02.
    Dim mBar As CommandBar, cmdButton As CommandBarButton 
03.
    Set mBar = ActiveExplorer.CommandBars("Standard") 
04.
    Set cmdButton = mBar.FindControl(Type:=msoControlButton, Tag:="MyToggle") 
05.
     
06.
    If cmdButton Is Nothing Then 
07.
        Set cmdButton = mBar.Controls.Add(msoControlButton) 
08.
        With cmdButton 
09.
            .Tag = "MyToggle" 
10.
            .Caption = "Aktivieren" 
11.
            .Visible = True 
12.
            .OnAction = "Toggle" 
13.
        End With 
14.
    End If 
15.
    set mBar = Nothing 
16.
    set cmdButton = Nothing 
17.
End Sub
Diese Prozedur kannst du entweder bei jedem Start von Outlook ausführen lassen (mit dem Application_Startup Event), oder einmalig ausführen lassen um den Button mit einem bestimmten TAG auf der Standardsymbolleiste zu erstellen.

Prozedur um den Button und die Variable umzustellen:
01.
Sub Toggle() 
02.
    Dim mBar As CommandBar, cmdButton As CommandBarButton 
03.
    Set mBar = ActiveExplorer.CommandBars("Standard") 
04.
    Set cmdButton = mBar.FindControl(Type:=msoControlButton, Tag:="MyToggle") 
05.
    If Not cmdButton Is Nothing Then 
06.
        If activate Then 
07.
            activate = False 
08.
            cmdButton.Caption = "Aktivieren" 
09.
        Else 
10.
            activate = True 
11.
            cmdButton.Caption = "Deaktivieren" 
12.
        End If 
13.
    End If 
14.
    set mBar = Nothing 
15.
    set cmdButton = Nothing 
16.
End Sub
Diese Prozedur sucht den vorher erstellten Button auf der Standard-Symboleiste, wechselt dessen Text und setzt deine Public Variable.

Das nur so als Anregung, damit hättest du den Zwischenschritt über eine Form gespart

Die zweite Variante über die Uhrzeit hatte ich noch in meinem letzten Kommentar gepostet, falls das eine Option für dich wäre.

Grüße Uwe
Bitte warten ..
Mitglied: 117974
23.09.2014, aktualisiert 26.09.2014
DoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDone
Bitte warten ..
Mitglied: colinardo
23.09.2014, aktualisiert um 12:11 Uhr
Zitat von 117974:
Gibts eigentlich eine komfortablere Lösung um das Makro auf
einem anderen PC zu "installieren" als alle Dateien einzeln zu exportieren bzw. importieren?
Ein richtiges COM- oder VSTO-Plugin mit Installationsroutine schreiben ist die sauberste Variante

Grüße Uwe
Bitte warten ..
Mitglied: 117974
23.09.2014, aktualisiert 26.09.2014
DoneDoneDoneDoneDoneDoneDoneDoneDoneDone
Bitte warten ..
Mitglied: colinardo
23.09.2014, aktualisiert um 12:50 Uhr
Zitat von 117974:
Ah okey, dafür müsste ich wahrscheinlich den Code anpassen nehm ich mal an oder?
logisch, wäre dann in vb.net / oder c# etc. zu schreiben ....
Bitte warten ..
Mitglied: 117974
26.09.2014, aktualisiert um 08:36 Uhr
DoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDone
Bitte warten ..
Mitglied: colinardo
26.09.2014, aktualisiert um 08:20 Uhr
dann hast du oben nicht den aktuellsten Code kopiert.
Den Fehler hattest du ja bei dir oben schon mal
Bitte warten ..
Mitglied: 117974
26.09.2014, aktualisiert um 08:36 Uhr
DoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDoneDone
Bitte warten ..
Mitglied: 118051
26.09.2014, aktualisiert um 14:46 Uhr
Hi ich bins wieder..das kommt leider davon, wenn man seinen Laptop am Schreibtisch offen liegen lässt, hier alles editiert und Account gelöscht -.-

Ich glaube ich hatte heute morgen schon geschrieben, dass der Code tatsächlich der aktuelle ist mit dem es nicht funktioniert. Weiterhin ist mir aufgefallen, dass wenn das Makro läuft und ich z.B. ein Item empfange was keine eMail ist sondern ein MeetingRequest oder so, kriege ich einen Error. Also ich habe es bisher nur so getestet indem ich ein MeetingRequest an mich selbst schicke, worauf ich dann den Fehler: "Run-time error '-2147221233 (8004010f)': The message you specified cannot be found." erhalte.

Liegt das evt. daran, dass das Item automatisch in "Deleted Items" verschoben wird?

Kann das sein oder sehe ich das falsch? Könnte man direkt am Anfang überprüfen ob das empfangene Element eine eMail ist? So eine Überprüfung findet meines Erachtens ja gar nicht statt, nur bei den Items in der Inbox.

Gruß und sorry für die Unannehmlichkeiten
Bitte warten ..
Mitglied: colinardo
26.09.2014, aktualisiert um 15:36 Uhr
was soll das denn hier bitte ?????
so blöd kann man nicht sein ...
bin dann mal weg hier .....
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Outlook & Mail
gelöst Outlook zeigt falschen Absender an (7)

Frage von AdmiNewbie zum Thema Outlook & Mail ...

Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

Outlook & Mail
Outlook 2010 - eMail mit Anhang wird nicht angezeigt (1)

Frage von staybb zum Thema Outlook & Mail ...

Erkennung und -Abwehr
gelöst MS Outlook - einfacher Absender Check (27)

Frage von K-ist-K zum Thema Erkennung und -Abwehr ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...