vb和Outlook - 仅使用vb代码显示来自联系人的消息(来自访问)

时间:2012-04-15 00:16:24

标签: ms-access search vba outlook

使用Office 2010。

在访问中,我有一个包含客户联系信息的表单。

客户端 OPENS 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

filtermail功能如下:

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中控制搜索栏的代码。 Search Bar

选择“所有邮件项目”或“所有Outlook项目”,按帐户或日期对结果进行排名,并使用以下查询“system.structuredquery.virtual.from :( name)”和“to :( name)”

手动使用搜索栏可以得到我想要的结果。我可以在不同的帐户和文件夹中查看客户的所有历史记录。但让它自动化会很棒。

是否可能,我怎样才能实现这一目标。

总结:当点击电子邮件旁边的按钮时,打开Outlook并显示来自该电子邮件的消息。

由于

1 个答案:

答案 0 :(得分: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

需要进行一些测试,但现在可以使用。 要调用函数/ sub,请参阅第1篇帖子中发布的代码。