2017-04-26 6 views
0

Je voudrais créer une macro pour effectuer une "Recherche Avancée" sur le sujet des tâches et éventuellement le corps des tâches. Par exemple, la recherche de "@Cris"outlook macro recherche avancée

J'ai copié et modifié ce code à partir d'un exemple pour Excel mais il ne fonctionne pas. Erreur d'exécution. Appréciez toute assistance

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

De quelle ligne provient l'erreur? – 0m3r

+0

Erreur sur la dernière ligne Set sch .... –

+0

Aussi, je voulais ajouter qu'il est important que la recherche prend en charge un caractère spécial comme @ –

Répondre

0

Vous devez spécifier une étendue valide et des critères de recherche. La portée de la recherche est le chemin du dossier d'un dossier, pas un nom de dossier. Il est recommandé que le chemin du dossier soit placé entre guillemets simples. Sinon, la recherche risque de ne pas renvoyer des résultats corrects si le chemin du dossier contient des caractères spéciaux, notamment des caractères Unicode. Pour spécifier plusieurs chemins de dossier, placez chaque chemin de dossier entre guillemets simples et séparez les chemins de dossier simples par une virgule.

Le paramètre Filter peut être n'importe quelle requête DASL valide. Pour plus d'informations sur les requêtes DASL, voir Filtering Items. Remarque: vous pouvez utiliser le code Chr Function pour représenter n'importe quel caractère dans les critères de recherche. Vous pouvez également trouver l'article Advanced search in Outlook programmatically: C#, VB.NET utile.

+0

Qu'est-ce que cette macro est censée faire? Rien ne se passe quand je l'exécute. (Gel du menu Outlook) –

0

Ok, c'est ce que j'ai commencé à travailler.

Lors du démarrage de la macro:

  1. Il demande à l'utilisateur d'entrer dans la chaîne
  2. Effectue et recherche avancée et recherche de chaîne dans le sujet (y compris les caractères spéciaux comme @cris)
  3. Crée dossier de recherche pour afficher résultats de la recherche

Dans le cas où cela aide quelqu'un d'autre. Je ne sais pas comment créer une sortie comme lors d'une recherche manuelle. Mais cela fonctionne pour moi.

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