1

Office 2010 を使用しています。

アクセスには、クライアントの連絡先情報を含むフォームがあります。

クライアントの電子メールの横にあるボタンをクリックすると、OUTLOOKが開き、フィルタが適用されて、そのクライアントからの電子メールのみが OUTLOOK に表示されます

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

フィルターメール機能は次のとおりです。

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

コードは正常に動作しますが、現在OUTLOOKで開いているフォルダーにのみフィルターを適用します。

複数のアカウントを持っている場合は、まず受信トレイまたは送信済みフォルダーを開いてから、フィルターを適用する必要があります。かなり面倒です。

上記のコードを、Outlook で検索バーを制御できるコードに置き換えたいと思います。 検索バー

したがって、「すべてのメール アイテム」または「すべての Outlook アイテム」を選択し、結果をアカウントまたは日付でランク付けし、次のクエリ「system.structuredquery.virtual.from:(name)」および「to:(name)」を使用します。

検索バーを手動で使用すると、必要な結果が得られます。さまざまなアカウントやフォルダーにまたがるクライアントのすべての履歴を確認できます。しかし、それを自動化することは素晴らしいことです。

それは可能ですか、どうすればこれを達成できますか。

要約すると、電子メールの横にあるボタンをクリックすると、Outlook が開き、その電子メールとの間のメッセージが表示されます。

ありがとう

4

1 に答える 1

1

それを見つけた:

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

少しテストが必要ですが、今のところは機能します。関数/サブを呼び出すには、最初の投稿に投稿されたコードを参照してください。

于 2012-04-15T21:07:57.330 に答える