Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
eigene Suche / Suchdialog für Outlook mit Hilfe von CDO
Gehe zu Seite 1, 2  Weiter
zurück: @Mods weiter: Visitenkartenanzeige im Lesebereich Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
POWVorti
Nix Neuling...


Verfasst am:
06. Okt 2005, 10:25
Rufname:
Wohnort: Where the streets have no name...

eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Hi!
Ich will ein Makro schreiben, mit dem ich den Suchdialog von Outlook öffnen kann und einen vorbefüllten Suchfilter setzen kann (bsp. Objekte der letzten 24 h suchen).
Wie öffne ich per VBA den Suchdialog? Weitere Optionen kann ich mir dann bei Google zusammen suchen.
Danke und Gruß
Timo


Zuletzt bearbeitet von POWVorti am 08. Nov 2005, 17:14, insgesamt einmal bearbeitet
Michael Bauer
MVP Outlook


Verfasst am:
06. Okt 2005, 11:56
Rufname:
Wohnort: Vollersode


AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Timo, Du kannst den Suchen-Dialog nicht über das Objektmodell ansprechen. Stattdessen könntest Du einen eigenen Dialog entwickeln und die AdvancedSearch-Funktion verwenden.
_________________
Michael Bauer
Tools für Microsoft Outlook
POWVorti
Nix Neuling...


Verfasst am:
06. Okt 2005, 13:02
Rufname:
Wohnort: Where the streets have no name...

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Ja, sowas in die Richtung ist auch ne Lösung...
ISt das eine Spezielle Outlook-Funktion? In der Hilfe habe ich nichts dazu gefunden...
Achso: Ich beziehe mich mal wieder (und noch immer Wink ) auf O2k...
Michael Bauer
MVP Outlook


Verfasst am:
06. Okt 2005, 13:23
Rufname:
Wohnort: Vollersode

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Ok, das hatte ich vergessen. AdvancedSearch gibt es seit OL XP. D.h., Du müßtest also alles von Hand machen. Weil´deutlich schneller geht, solltest Du dafür CDO statt des Outlook Objektmodells benutzen.
_________________
Michael Bauer
Tools für Microsoft Outlook
POWVorti
Nix Neuling...


Verfasst am:
06. Okt 2005, 13:32
Rufname:
Wohnort: Where the streets have no name...


AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Puuuh....
Da hab ich keine Ahnung von. Kannst du mich zu dem Thema ein bißchen instruieren, bzw. Seiten zum Weiterlesen empfehlen?
Danke dir!
Michael Bauer
MVP Outlook


Verfasst am:
06. Okt 2005, 16:34
Rufname:
Wohnort: Vollersode

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Meinst Du CDO? Die beste Seite dafür ist www.cdolive.com

CDO ist eine optionale Installation von der Office-CD. Darüber mußt Du Dir Gedanken machen, bevor Du das z.B. an Kunden weitergibst: Wenn die Komponente nicht installiert und die CD nicht am Arbeitsplatz vorhanden ist, dann kann´s Probleme geben.

Ansonsten funktioniert vieles wie mit dem OOM auch. Binde "Microsoft CDO 1.21 Libraray" in Dein Projekt ein, dann kannst Du die Bilbiothek über den Objektkatalog durchsuchen. Um Eigenschaften abzufragen, benötigst Du deren PropertyID, die Du nahezu alle unter der Enumeratioin "CdoPropTags" im Objektkatalog findest.

Hier mal ein Bsp., um die Items eines Ordners zu durchlaufen. Wie Du siehst, ist´s beinahe identisch zum Outllook-Objekt:
Code:

Private Sub LoopItems(oItems As MAPI.Messages)
  Dim obj As Object
 
  For Each obj In oItems
    Select Case True
    Case (TypeOf obj Is MAPI.Message)
      HandleMessage obj
    Case (TypeOf obj Is MAPI.AppointmentItem)
      ' Another method for handling AppointmentItems etc.
    End Select
  Next
End Sub

Private Sub HandleMessage(oItem As MAPI.Message)
  ' Do s.th. with the object.
End Sub


Um z.B. den Betreff einer Mail zu lesen, verwendest Du die PropID "CdoPR_SUBJECT". Dieses Bsp. liefert True, wenn der Betreff mit einer bestimmten Zeichenkette beginnt:
Code:

Private Function SubjectStartsWith(oItem as MAPI.Message, sFind as String) as Boolean
  Dim colFields as MAPI.Fields
  Dim oField as MAPI.Field
  Set colFields=oItem.Fields
  Set oField=colFields(CdoPR_SUBJECT)
  SubjectStartsWith=(Instr(1, oField.Value, sFind, vbTextCompare)=1)
End Function


Der Aufwand lohnt sich wirklich. Die Größenverhältnisse sind in etwa so: Eine Schleife über 1000 Elemente dauert mit den OOM ca. 4 Sekunden, mit CDO dagegen nur 0.5!

Obendrein bekommst Du über CDO Infos, die das OOM Dir nicht preisgibt. In OL 2000 z.B. die E-Mail-Adresse des Absenders, oder den Internetheader.

Hast Du die Redemption? In der kommenden Version (vieleicht auch schon aktuell, www.dimastr.com) kann die CDO komplett ersetzen (und vieles mehr)! Damit entfällt dann das Theater des Bereithaltens der Office-CD in großen Firmen.

_________________
Michael Bauer
Tools für Microsoft Outlook
POWVorti
Nix Neuling...


Verfasst am:
07. Okt 2005, 11:01
Rufname:
Wohnort: Where the streets have no name...

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Crying or Very sad Unsere Security ist da sehr stringent, was Fremd-Software angeht... Ich denke, dann werd ich es wohl über das Outlook-Objektmodell lösen. Schade, ich dachte es ginge einfacher. Dann muß ich ja ne rekursive Ordnersuche programmieren Evil or Very Mad Nix als Stress...
Naja, aber vielen Dank für deine Hilfe.
POWVorti
Nix Neuling...


Verfasst am:
07. Okt 2005, 11:10
Rufname:
Wohnort: Where the streets have no name...

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Ich seh grad, daß unser Infrastrukturmanagment anscheinend so schlau war, ein bißchen mehr als nur die Standard-Outlook-Installation auf den Clients durchzuführen. Die CDO-Bibliothek ist verfügbar Very Happy
Ich schau mal, ob ich da ne Umsetzung mit machen kann. Danke nochmal!
Michael Bauer
MVP Outlook


Verfasst am:
07. Okt 2005, 12:26
Rufname:
Wohnort: Vollersode

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Sehr gut. Wenn´s Probleme gibt, dann melde Dich einfach wieder!
_________________
Michael Bauer
Tools für Microsoft Outlook
POWVorti
Nix Neuling...


Verfasst am:
04. Nov 2005, 09:41
Rufname:
Wohnort: Where the streets have no name...

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Hi!
Ich komm damit nicht so ganz zu Rande... Kannst du mir doch nochmal ein bißchen Backup geben?!

1. Ist es korrekt, daß ich erst eine Session für CDO öffnen muß, bevor ich auf irgendwelche Folder etc. zugreifen kann?

2. Wenn ich ein MAPIFolder habe (z.B. über den PickFolder-Aufruf), kann ich das dann auf ein CDO-Folder "casten"?

Nun, um zu zeigen, wie weit ich es mal probiert habe, hier mal mein Code-Schnipsel... Das läuft allerdings überhaupt nicht. Ich verheddere mich immer zwischen dem Outlook-Objektmodell und CDO:

Code:
Public search_string As String
Public objsession As Session

Sub search()
    Dim olNameSpace As NameSpace
    Dim start_folder As MAPIFolder
    Dim start_id As String
   
    Set objsession = CreateObject("MAPI.Session")
    objsession.Logon "User", "", True
   
    Set olNameSpace = GetNamespace("MAPI")
    Set start_folder = olNameSpace.PickFolder
   
    start_id = start_folder.EntryID
    search_string = InputBox("Bitte Suchstring in Betreff eingeben!", "Suche...")
    rekursion start_id
End Sub


Private Sub rekursion(ByVal active_folder_id As String)
    Dim oitems As MAPI.Messages
    Dim CDOFolder As Folder

    Set CDOFolder = objsession.GetFolder(active_folder_id)
    Set oitems = CDOFolder.Messages
    LoopItems (oitems)
    For Each subfolder In objsession.GetFolder(active_folder_id).Folders
        rekursion (subfolder.EntryID)
    Next subfolder
   
End Sub

Private Sub LoopItems(oitems As MAPI.Messages)
  Dim obj As Object
 
  For Each obj In oitems
    If TypeOf obj Is MAPI.Message Then
      If SubjectStartsWith(obj) = True Then
        MsgBox (oItem.Fields(CdoPR_SUBJECT))
    End If
  Next
End Sub

Private Function SubjectStartsWith(oItem As MAPI.Message) As Boolean
  Dim colFields As MAPI.Fields
  Dim oField As MAPI.Field
  Set colFields = oItem.Fields
  Set oField = colFields(CdoPR_SUBJECT)
  SubjectStartsWith = (InStr(1, oField.Value, search_string, vbTextCompare) = 1)
End Function


Ich versuche irgendwie über die EntryID des MAPIFolders an das CDO-Folder zu kommen... aber da knallts dann (natürlich?!).
Für Hilfestellungen wäre ich sehr dankbar...
Gruß Timo
Michael Bauer
MVP Outlook


Verfasst am:
04. Nov 2005, 13:41
Rufname:
Wohnort: Vollersode

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Hi,

1. Ja. Wenn Du innerhalb Outlooks arbeitest (OL also schon läuft), dann reicht´s so: LogOn , , False, False, , True

2. Ja. Verwende bitte in CDO die GetFolder Funktion und übergib EntryID und StoreID des Outlook Objekts. Die IDs sind identisch.

_________________
Michael Bauer
Tools für Microsoft Outlook
POWVorti
Nix Neuling...


Verfasst am:
07. Nov 2005, 14:02
Rufname:
Wohnort: Where the streets have no name...

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Jetzt funzt es!!!
Danke für deine Unterstützung!!! Momentan gebe ich die Anzahl der gefundenen Mails und die Suchzeit in ner Message-Box aus.
Code:

Public search_string As String
Public objsession As Session
Public i As Integer

Sub search()
    Dim olNameSpace As NameSpace
    Dim start_folder As MAPIFolder
    Dim start_id As String, start_Sid
    Dim oitems As MAPI.Messages
    Dim CDOFolder As Folder
    Dim startpunkt As Variant
    Dim differenz As Date
   
    ' Erstellen der Outlook-Session
    Set objsession = CreateObject("MAPI.Session")
    objsession.Logon , , False, False, , True
   
    ' Festlegen des Namespace
    Set olNameSpace = GetNamespace("MAPI")
    ' Fenster zur Ordnerauswahl öffnen
    Set start_folder = olNameSpace.PickFolder
    ' IDs festlegen
    start_id = start_folder.EntryID
    start_Sid = start_folder.StoreID
    ' Suchstring eingeben
    search_string = InputBox("Bitte Suchstring in Betreff eingeben!", "Suche...")
    ' MAPIFolder auf CDOFolder "casten"
    Set CDOFolder = objsession.GetFolder(start_id, start_Sid)
    ' Alle Nachrichten im Ordner belegen
    i = 0
    startpunkt = Time
    rekursion CDOFolder
    differenz = Time - startpunkt
    MsgBox differenz & vbCrLf & "Gefunden: " & i
End Sub


Private Sub rekursion(ByVal ActiveFolder As Folder)
    Dim oitems As MAPI.Messages
    Dim subfolder As Folder
    Dim subfolders As MAPI.Folders
   
    ' Alle Nachrichten im Ordner belegen
    Set oitems = ActiveFolder.Messages
    LoopItems oitems
    Set subfolders = ActiveFolder.Folders
    ' Für jeden Unterordner im Folder weitersuchen
    Set subfolder = subfolders.GetFirst()
    Do Until subfolder Is Nothing
        rekursion subfolder
        Set subfolder = subfolders.GetNext()
    Loop
End Sub

Private Sub LoopItems(oitems As Messages)
    Dim obj As Object
    Dim colFields As MAPI.Fields

    ' Für jedes Objekt im Ordner
    Set obj = oitems.GetFirst()
    Do Until obj Is Nothing
        ' Wenn der Typ des Objekts eine Message ist
        If TypeOf obj Is MAPI.Message Then
            ' Wenn der Betreff dem Suchstring entspricht
            If SubjectStartsWith(obj) = True Then
                'MsgBox (obj.Fields(CdoPR_SUBJECT))
                i = i + 1
            End If
        End If
        Set obj = oitems.GetNext()
    Loop
End Sub

Private Function SubjectStartsWith(oItem As MAPI.Message) As Boolean
    Dim colFields As MAPI.Fields
    Dim oField As MAPI.Field
   
    Set colFields = oItem.Fields
    Set oField = colFields(CdoPR_SUBJECT)
    SubjectStartsWith = (InStr(1, oField.Value, search_string, vbTextCompare) = 1)
End Function

Mit dem Teil kann man auch andere Postfächer, für die man die Stellvertretung hat durchsuchen (z. B. öffentliche Ordner, Gruppenbriefkasten, etc.). Die Funktionalität ist ja unter Outlook standardmäßig deaktiviert (ich meine aus Performance-Gründen...).


Zuletzt bearbeitet von POWVorti am 15. Nov 2005, 18:13, insgesamt einmal bearbeitet
POWVorti
Nix Neuling...


Verfasst am:
07. Nov 2005, 15:40
Rufname:
Wohnort: Where the streets have no name...

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Hi...
Nochmal ein Update. Ich habe das ganze nochmal optimiert (ohne "For Each" gearbeitet... Ist oben neu editiert...)
Jetzt bekomme ich eine sehr gute Suchzeit hin. Das klappt wunderbar!
Thx nochmal!
thera
ohne Ahnung viel erreichen


Verfasst am:
07. Nov 2005, 22:40
Rufname:

AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Morgen OL-Pros

Ich bin eigentlich im Excel(VBA) Forum zu Hause und habe leider keine Ahnung von OL-VBA, aber ist es möglich diesen Code unproblematisch in Ol2003 zum laufen zu bekommen?
Das was er hier beschreibt würde ich nämlich auch ganz gerne in meinem OL haben.
Habe deshalb den oben angeführten Code in ein Modul kopiert und probiert es auszuführen.
Aber OL streikt bei mir leider schon bei Zeile 2 (mein OL kennt As Session nicht)
Code:
Public objsession As Session

Ist das normal bei 2003?
Kann mir da jemand helfen?

Bedanke mich schon mal für jeden Ansatz.
POWVorti
Nix Neuling...


Verfasst am:
08. Nov 2005, 09:30
Rufname:
Wohnort: Where the streets have no name...


AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO - AW: eigene Suche / Suchdialog für Outlook mit Hilfe von CDO

Nach oben
       

Hi!
Ich habe zwar nur OL 2000, aber ich denke, daß du bei 2003 genauso vorgehen mußt.
Der Code oben ist mit einem anderen Objektmodell programmiert (CDO, vgl. Schriftwechsel vorher). Du mußt im VBA-Editor unter "Extras" -> "Verweise" die dll mit dem Namen "Microsoft CDO 1.2 Libary" (sollte in der Auswahlliste enthalten sein) einbinden. Bei mir liegt sie unter "C:\Programme\Gemeinsame Dateien\System\Mapi\1031\NT" und heißt CDO.dll.
Die passende Hilfe zum Objektmodell gibts hier: http://www.cdolive.com/download/cdo.zip
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Outlook Mail: Fehlermeldung bei Outlook 2002 unter XP mit SP2 0 pillar 1295 09. Jul 2004, 08:18
pillar Fehlermeldung bei Outlook 2002 unter XP mit SP2
Keine neuen Beiträge Outlook Mail: Outlook versendet Doppelte eMails an Selbstdef. Verteiler 0 ichbinsnur 2638 08. Jul 2004, 13:22
ichbinsnur Outlook versendet Doppelte eMails an Selbstdef. Verteiler
Keine neuen Beiträge Outlook Mail: Outlook Web Access 0 =(Apache)= Com. 2019 01. Jul 2004, 13:07
=(Apache)= Com. Outlook Web Access
Keine neuen Beiträge Outlook Mail: Outlook druckt HTML mails ohne linken Rand 1 kubu 3429 24. Jun 2004, 14:59
kubu Outlook druckt HTML mails ohne linken Rand
Keine neuen Beiträge Outlook Mail: Überschreibemodus Outlook 1 Mutzi 4451 21. Jun 2004, 21:36
Amethyst Überschreibemodus Outlook
Keine neuen Beiträge Outlook Mail: Hilfe! Filterregel für Outlook 2002 - nicht vom Server laden 1 ulli 2132 07. Jun 2004, 11:54
JoernZ Hilfe! Filterregel für Outlook 2002 - nicht vom Server laden
Keine neuen Beiträge Outlook Mail: Outlook 2003 / Senden von E-Mails 2 Wieso 7182 05. Jun 2004, 11:46
Wieso / Flo Outlook 2003 / Senden von E-Mails
Keine neuen Beiträge Outlook Mail: Sicherheitseinstellung von outlook verstellen 2 Philippe Sch. 3474 15. Mai 2004, 18:24
Gast Sicherheitseinstellung von outlook verstellen
Keine neuen Beiträge Outlook Mail: Anlagen aus Outlook löschen 1 cooky63 8084 04. Apr 2004, 12:47
domin8tor Anlagen aus Outlook löschen
Keine neuen Beiträge Outlook Mail: Outlook 2003: Automatisches Empfangen abschalten? 3 Kiss 5206 23. März 2004, 19:27
domin8tor Outlook 2003: Automatisches Empfangen abschalten?
Keine neuen Beiträge Outlook Mail: Autovervollständigung der E-Mailadresse unter Outlook 2000 3 bendiel 7979 15. März 2004, 14:22
domin8tor Autovervollständigung der E-Mailadresse unter Outlook 2000
Keine neuen Beiträge Outlook Mail: Outlook Heute - Posteingang 3 Philo_ 3131 09. März 2004, 18:56
domin8tor Outlook Heute - Posteingang
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Access Tabellen