2017-04-26 51 views
0

我想創建一個宏來執行任務主題和可選任務主體的「高級搜索」。例如搜索「@Cris」展望宏高級搜索

我已經從Excel的示例中複製並修改了此代碼,但它沒有運行。運行時錯誤。感謝任何幫助

Sub AdvancedSearchComplete() 
    Dim rsts As Outlook.Results 
    Dim i As Integer 
    Dim strF As String 
    Dim strS As String 
    strS = "Tasks" 
    StrName = InputBox("Search String?") 
    strF = InStr(LCase("urn:schemas:tasks:subject"), StrName) 

    Set sch = Application.AdvancedSearch(strS, strF, , "Search1") 
End Sub 
+0

哪條線是從哪裏來的錯誤? – 0m3r

+0

錯誤發生在最後一行Set sch .... –

+0

另外,我想補充一點,搜索支持一個特殊字符如@ –

回答

0

您需要指定有效範圍和搜索條件。搜索的範圍是文件夾的文件夾路徑,而不是文件夾名稱。建議將文件夾路徑括在單引號內。否則,如果文件夾路徑包含包含Unicode字符的特殊字符,則搜索可能不會返回正確的結果。要指定多個文件夾路徑,請將每個文件夾路徑用單引號括起來,並用逗號分隔單引號文件夾路徑。

Filter參數可以是任何有效的DASL查詢。有關DASL查詢的其他信息,請參閱Filtering Items

請注意,您可以使用Chr Function來表示搜索條件中的任何字符。

Sub TestSearchForMultipleFolders() 
Dim Scope As String 
Dim Filter As String 
Dim MySearch As Outlook.Search 
Dim MyTable As Outlook.Table 
Dim nextRow As Outlook.Row 
m_SearchComplete = False 
'Establish scope for multiple folders 
Scope = "'" & Application.Session.GetDefaultFolder(_ 
olFolderInbox).FolderPath _ 
& "','" & Application.Session.GetDefaultFolder(_ 
olFolderSentMail).FolderPath & "'" 
'Establish filter 
If Application.Session.DefaultStore.IsInstantSearchEnabled Then 
    Filter = Chr(34) & "urn:schemas:httpmail:subject" _ 
    & Chr(34) & " ci_phrasematch 'Office'" 
Else 
    Filter = Chr(34) & "urn:schemas:httpmail:subject" _ 
    & Chr(34) & " like '%Office%'" 
End If 
Set MySearch = Application.AdvancedSearch(Scope, Filter, True, "MySearch") 
While m_SearchComplete <> True 
    DoEvents 
Wend 
Set MyTable = MySearch.GetTable 
    Do Until MyTable.EndOfTable 
    Set nextRow = MyTable.GetNextRow() 
    Debug.Print nextRow("Subject") 
Loop 
End Sub 

此外,您可能會發現文章Advanced search in Outlook programmatically: C#, VB.NET有幫助。

+0

這個宏應該做什麼?當我運行它時沒有任何反應。 (outlook菜單凍結) –

0

好吧,這是我的工作。

當開始宏:

  1. 它要求用戶輸入字符串
  2. 執行和預先搜索和在主題中搜索的字符串(包括特殊字符,如@cris)
  3. 創建的搜索文件夾,以顯示搜索結果

萬一它幫助別人。我不知道如何在創建輸出時進行手動搜索。但這對我很有用。

Sub AdvSearchForStr() 
    On Error GoTo Err_SearchFolderForSender 
    Dim strFrom As String 
    Dim strTo As String 
    Dim strSearch As String 

    strSearch = InputBox("Enter String to AdvSearch", "Advanced Search") 

    strTo = "Test" 

    Dim strDASLFilter As String 
    strDASLFilter = "urn:schemas:httpmail:subject LIKE '%" & strSearch & "%'" 

    Debug.Print strDASLFilter 

    Dim strScope As String 
    strScope = "'Inbox', 'Sent Items', 'Tasks'" 

    Dim objSearch As Search 
    Set objSearch = Application.AdvancedSearch(Scope:=strScope, Filter:=strDASLFilter, SearchSubFolders:=True, Tag:="SearchFolder") 

    'Save the search results to a searchfolder 
    objSearch.Save (strSearch) 

    Set objSearch = Nothing 
    Exit Sub 

Err_SearchFolderForSender: 
    MsgBox "Error # " & Err & " : " & Error(Err) 

End Sub