2012-04-15 12 views
1

mit Office 2010vb und Outlook - zeigen nur Nachrichten aus dem Kontakt vb Code (von access)

In Zugang habe ich ein Formular Kontaktinformationen von Kunden enthält.

Ein Knopf neben dem E-Mail-Client des OPENS OUTLOOK und wendet einen Filter nur die E-Mails von diesem Client in OUTLOOK anzuzeigen.

Private Sub filterOutlook_Click() 
    'bit of code here which checks if outlook is open, if not then" 
    Shell "Outlook.exe /cleanviews" 

    'email of contact field(hyperlink) is retreived 
    contactname = Left$([E-mail contact].Value, InStr([E-mail contact].Value, "#") - 1) 

    filtermail contactname 
End Sub 

Die filtermail Funktion ist wie folgt:

Public Sub filtermail(name As String) 

Dim objView As View 
Set objView = outlook.ActiveExplorer.CurrentView 

    If LenB(name) = 0 Then 
     objView.Filter = vbNullString 
    Else 
     objView.Filter = _ 
     "http://schemas.microsoft.com/mapi/proptag/0x0065001f CI_STARTSWITH '" & name & "'" 
    End If 

objView.Save 
objView.Apply 

End Sub 

Der Code funktioniert gut, aber wendet den Filter nur auf den Ordner zur Zeit offen in AUSBLICK.

Wenn Sie mehrere Konten haben, müssen Sie zuerst den Posteingang oder den gesendeten Ordner öffnen und dann den Filter anwenden. Ziemlich umständlich.

Ich möchte den obigen Code zu einem ersetzen, wo ich den Suchbalken in Outlook steuern kann. Search Bar

So wählen Sie „Alle Postsendungen“ oder „Alle Outlook-Elemente“, das Ergebnis von Konto oder das Datum Ranking und mit den folgenden Abfragen „system.structuredquery.virtual.from: (Name)“ und „:(Name)".

Mit der Suchleiste manuell gibt mir das gewünschte Ergebnis. Ich kann den gesamten Verlauf mit einem Client über verschiedene Konten und Ordner hinweg sehen. Aber es automatisiert zu haben wäre großartig.

Ist es möglich und wie kann ich dies erreichen?

Zusammenfassend: Wenn die Schaltfläche neben der E-Mail geklickt wurde, öffnen Sie Outlook und zeigen Sie Nachrichten von und zu dieser E-Mail an.

Dank

Antwort

1

es gefunden:

Public Sub filtermail(name As String) 

Dim myOlApp As New outlook.Application 

    If LenB(name) = 0 Then 
     myOlApp.ActiveExplorer.ClearSearch 
    Else 
     myOlApp.ActiveExplorer.Search "from:(" & name & ") OR to:(" & name & ")", olSearchScopeAllFolders 
    End If 

Set myOlApp = Nothing 
End Sub 

braucht ein wenig getestet, funktioniert aber für jetzt. Um die Funktion/Sub aufzurufen, siehe Code im ersten Post.