如何使用 VBA 从 Outlook 状态栏中删除 DASL 过滤器文本?
Posted
技术标签:
【中文标题】如何使用 VBA 从 Outlook 状态栏中删除 DASL 过滤器文本?【英文标题】:How to remove DASL filter text from Outlook status bar with VBA? 【发布时间】:2022-01-15 22:19:58 【问题描述】:我正在使用工作正常的 DASL 过滤器过滤 Outlook。但是当清除过滤器时,过滤的内容会被重置,但它不会在底部显示电子邮件的数量。它显示为“已应用过滤器”。所以我需要手动去清除 DASL 过滤器的值。
我们能否在不更改我所在的现有视图的情况下通过 VBA 将 DASL 过滤器清除为默认值?
对于清除过滤器,我在发布的答案中使用相同的代码。它清除数据。但它不会清除状态栏中的文本,并且一直显示“已应用过滤器”。
Public Sub FilterView()
Dim objView As View
Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem
Set olApp = New Outlook.Application
On Error Resume Next
Set olMail = olApp.ActiveInspector.currentItem
On Error GoTo 0
If olMail Is Nothing Then
On Error Resume Next
Set olMail = olApp.ActiveExplorer.Selection.Item(1)
On Error GoTo 0
End If
If Not olMail Is Nothing Then
SName = olMail.Sender
Else
MsgBox "Active item is not an email or no email selected"
End If
Set objView = Application.ActiveExplorer.CurrentView
QueryV = "urn:schemas:mailheader:sender = " & Chr(39) & SName & Chr(39)
objView.Filter = QueryV
objView.Save
End Sub
【问题讨论】:
您在 Outlook 中使用什么代码进行筛选?您是否将筛选器应用于 Outlook 中的文件夹视图? 【参考方案1】:View.Standard 属性返回一个布尔值,用于指定视图是否为内置 Outlook 视图。因此,如果它不是标准的,您可以随时调用 View.Reset 方法,将内置 Microsoft Outlook 视图重置为其原始设置。
Sub ResetView()
Dim v as Outlook.View
' Save a reference to the current view object
Set v = Application.ActiveExplorer.CurrentView
' Reset and then apply the current view
v.Reset
v.Apply
End Sub
您也可以考虑通过设置View.Filter 属性在 Outlook 中自行设置 CurrentView,该属性返回或设置表示视图过滤器的字符串值。例如:
Private Sub FilterViewToLastWeek()
Dim objView As View
' Obtain a View object reference to the current view.
Set objView = Application.ActiveExplorer.CurrentView
' Set a DASL filter string, using a DASL macro, to show
' only those items that were received last week.
objView.Filter = "%lastweek(""urn:schemas:httpmail:datereceived"")%"
' Save and apply the view.
objView.Save
objView.Apply
End Sub
【讨论】:
感谢您的更新。我只是想要一种方法来清除前景底部的过滤器文本。一旦应用过滤器并清除它,它仍然会在 Outlook 状态栏中显示“已应用过滤器”。相反,当 cleat 它应该显示电子邮件和未读电子邮件的数量。我正在使用与您在上面发送的过滤器相同的代码。 您尝试了哪些代码来清除筛选器并在 Outlook 中应用您的更改? 应用我正在使用的过滤器 很清楚如何应用过滤器,但没有重置视图的代码。以上是关于如何使用 VBA 从 Outlook 状态栏中删除 DASL 过滤器文本?的主要内容,如果未能解决你的问题,请参考以下文章
是否有 VBA 方法可以在 Outlook 中创建新日历(不是约会)
从 MS Access 2016 VBA 启动 Outlook 2016 触发“另一个程序正在使用 Outlook”并死掉