使用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并显示来自该电子邮件的消息。
由于
答案 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篇帖子中发布的代码。