我想阅读Explorer.Search
函数的当前过滤器
我用这段代码试了一下:
private sub read_old_filter()
dim objExplorer as Outlook.Explorer
dim oldFiler as String
set objExplorer = Outlook.ActiveExplorer
oldFilter = objExplorer.search
end sub
但是objExplorer.search
是一个函数,所以它无法工作。
我想重用旧的过滤器。我有makros如何过滤像strFilter = "received:(today OR yesterday)"
这样的东西。
private sub read_old_filter()
位于我的用户表单中。我想连接旧过滤器和用户窗体的新过滤器。
任何人都可以帮助我吗? 感谢您的任何赞扬和回答。亲切的判决,Nico
答案 0 :(得分:3)
在Outlook VBA中,这显然不是直接。虽然有一个ActiveExplorer.CurrentView.Filter以及View的XML属性,但这不会公开当前的过滤器查询/条件。
然而,在搜索时,我遇到了这个提及救赎的线程,这似乎提供了你所需要的: How to get a search folder criteria in Outlook
希望这有帮助。
答案 1 :(得分:0)
我有个好主意。我制作了Modul1
全球价值观。在此值中是宏的过滤器选项。
我用Integer
保存当前的过滤器编号。 Public Function
读取Integer
并使用Select Case
将正确的过滤器传递给用户表单。
<强> Modul1 强>
Const FILTER_1 As String = "" 'löscht alle filter
Const FILTER_2 As String = "followupflag:(followup flag)" 'zeigt nur Tasks an
Const FILTER_3 As String = "received:(today OR yesterday)" 'zeigt nur mails von heute und gestern
Dim filterUsed As Integer
'select right filter and save the number
Sub ViewFilter_all()
filterUsed = 1
Call filter_aktualisieren(FILTER_1)
End Sub
Sub onlyTasks()
filterUsed = 2
Call filter_aktualisieren(FILTER_2)
End Sub
Sub ViewFilter_today()
filterUsed = 3
Call filter_aktualisieren(FILTER_3)
End Sub
'search function for the macros
Private Sub filter_aktualisieren(strFilter As String)
Dim objExplorer As Object
Set objExplorer = Outlook.ActiveExplorer
objExplorer.search strFilter, Outlook.OlSearchScope.olSearchScopeCurrentFolder
objExplorer.Display
End Sub
'function to pass the filter to the userform
Public Function getFilterUsed() As String
Select Case filterUsed
Case 1
getFilterUsed = FILTER_1
Case 2
getFilterUsed = FILTER_2
Case 3
getFilterUsed = FILTER_3
Case Else
getFilterUsed = "none"
End Select
End Function
Userform的一部分
Public Sub UserForm_Initialize()
'code....
'vorFilter is a Global String in my Userform
vorFilter = getFilterUsed()
'code....
End Sub
希望解决方案也帮助其他人。