PDA

Vollständige Version anzeigen : Automatisch als gelesen markieren?


<Shorty>
22.01.2002, 17:50
Hi...
Ich habe das Problem das ich eine große Anzahl an Mails pro Tag bekomme... Ich möchte nun per Regel-Assistenten bestimmte Mails sofort als gelesen markieren (aber nicht alle eingehenden)... Ich habe schon überall nachgeschaut, aber noch nichts passendes gefunden... Nun hab ich mir gedacht, dass dies bestimmt mit VBA zu realisieren ist?! Kann mir da jemand weiter helfen???

schon mal Danke im vorraus...
mfg shorty

Alexander Jan Peters
23.01.2002, 08:52
<font face="Tahoma">Hallo Shorty,

mit Hilfe eines Skripts, müßte das eigentlich machbar sein. <a href="http://www.swynk.com/winscript/DOCS_DisplayUnreadOutlookMailItems.asp">Hier</a> findest Du ein Beispiel für den Zugriff auf die ungelesenen Elemente der Inbox.
Mit folgender Abwandlung müßten damit alle ungelesenen Mails eines Empfänger als gelesen markiert werden.

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">For</span> <span class="TOKEN">Each</span> CurrentItem <span class="TOKEN">In</span> objFolder.Items
<span class="TOKEN">If</span> CurrentItem.UnRead <span class="TOKEN">Then</span>
<span class="TOKEN">If</span> CurrentItem.ReceivedByName = &quot;MeinName&quot; <span class="TOKEN">Then</span>
CurrentItem.UnRead = <span class="TOKEN">False</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span>
&nbsp;</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

<font face="Tahoma">Ich bin mir bei der Eigenschaft ReceivedByName nicht sicher, ob es der Empfänger ist, es gibt da wohl mehrere Varianten (werd' aus dem Objektmodell nicht ganz schlau).
Eine differenziertere Prüfung, welche Mails als gelesen zu markieren sind, kannst Du dann ja Deinen Wünschen entsprechend einbauen.
Im Regelassistent läßt sich dieses VB-Skript auch als zu startende Anwendung festlegen (Auswahl: Alle Dateien).

Gruß

A.J. Peters</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...</font>

team15
05.02.2002, 10:24
Hallo Alexander...
Ich habe jetzt ein Modul mit dem quelltext erstellt und diesen abgespeichert. in den regelassistenten hab ich die .bas datei als zu startende anwendung eingebaut. wenn nun die regel ausgeführt wird, bekomme ich eine meldung das für die datei kein programm zum ausführen angegeben ist. wie kann ich denn nun der .bas datei den VB-Editor zuweisen? wo finde ich den denn? im office verzeichnis hab ich ihn noch nicht gefunden.

mfg shorty

Alexander Jan Peters
05.02.2002, 12:02
<font face="Tahoma">Sorry,

da haben wir uns mißverstanden. Ich meinte mit dem Speichern als VB-Skript eine Speicherung als .vbs-Datei. Einfach den Inhalt des Moduls(BAS) in eine leere Textdatei kopieren, diese in ein VB-Skript umwandeln (Dateiendung in VBS ändern). Damit führt der Windows Scripting Host (WSH) die Datei als ausführendens Programm aus.

Gruß

Alex</font>

team15
05.02.2002, 12:46
Supi, es klappt schon fast...
Also wenn ich die mails nicht in einen bestimmten ordner verschieben lasse, dann markiert er sie im Posteingang als gelesen. Allerdings bleiben sie ungelesen wenn ich Sie in einen Ordner verschieben lasse...
Dim objOutlook
Dim objNameSpace
Dim objFolder
Dim CurrentItem
Dim strOutput

Const olFolderInbox = 6

Set objOutlook = CreateObject("Outlook.application")
Set objNameSpace = objOutlook.GetNameSpace("MAPI")
Set objFolder = objNameSpace.GetDefaultFolder(olFolderInbox)

For Each CurrentItem in objFolder.Items
'If CurrentItem.Unread then
CurrentItem.UnRead = False
'End If
Next

'If strOutput = "" Then
' Msgbox "No Unread Messages", vbInformation,"Tasks For Today"
' End If

' **** Clean up
'
Set objFolder = Nothing
Set objNameSpace = Nothing
set objOutlook = Nothing
Ich denke mal das es an dieser Anweisung liegt.
Set objFolder = objNameSpace.GetDefaultFolder(olFolderInbox)
Wie kann ich denn da einen beliebigen Ordner angeben?? der ordner in den die Mails verschoben werden ist unter "Posteingang" dann unter "news" dann unter "aktuellenews" zu finden...

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag der Code für dieses Forum angepasst.<font>

Alexander Jan Peters
05.02.2002, 18:47
<font face="Tahoma">Hallo Shorty,

Du kannst da genauso vorgehen, wie beim Durchlaufen aller Mails eines Ordners. Die Mail-Items sind Elemente in der Auflistung Items des Posteingangs. Die Unterordner sind wiederum Elemente der Auflistung Folders dieses Objekts.
Also kannst Du so:</font>
<font face="Courier New">
Dim Fld
...
For Each Fld In objFolders.Folders
For Each CurrentItem in Fld.Items
'If CurrentItem.Unread then
CurrentItem.UnRead = False
'End If
Next
Next
</font>
<font face="Tahoma">die Ordner durchlaufen und alle Mails als gelesen markieren.
Wenn Du nur auf einen bestimmten Ordner zugreifen willst, geht es, glaub ich, mit:</font>
<font face="Courier New">
Set objFolder = objNameSpace.Folders("MeinOrdner")</font>
<font face="Tahoma">
Gruß

Alex</font>