2015-07-11 1 views
0

Итак, я новичок в запросах dasl и прочесал сеть, пытаясь выяснить, как правильно их использовать. Я пытаюсь просмотреть все папки Outlook для почтовых элементов, соответствующих определенным параметрам, и сохранить вложение ... довольно просто.Сфера применения метода AdvancedSearch для всего почтового ящика

У меня, к сожалению, проблема с моим кодом, я не знаю, как ссылаться на область видимости, чтобы просматривать все папки, даже настраиваемые папки.

Ниже приведен мой код (я понимаю, что некоторые из утверждений неверны), любая помощь приветствуется. Я выполнял должную осмотрительность по этим проблемам, но не могу найти ресурсы, которые отвечают на мой вопрос, поэтому я размещаю здесь. Будем очень благодарны за любые ответы или ссылки на ответы.

Sub testing() 

Dim myOlApp As New Outlook.Application 
Dim scope As String 
Dim filter As String 
Dim rsts As Results 
Dim AdvancedSearch As Outlook.Search 

blnSearchComp = False 

'I want it to search the entire mail account including normal folders like inbox and sent as well as custom folders. 
'but this doesn't work. Any ideas? 
scope = "'[email protected]'" 
'filter assignment statement has been excluded 

Set AdvancedSearch = myOlApp.AdvancedSearch(scope, filter, True, "test") 



While blnSearchComp <> True 
    If AdvancedSearch.Results.Count > 0 Then 
     blnSearchComp = True 
    End If 
Wend 

Set rsts = AdvancedSearch.Results 

For x = rsts.Count To 1 Step -1 
    rsts.Attachment.Item(x).SaveAsFile Project 
Next 

End Sub 

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, и еще раз спасибо за помощь !!! =)

PS: спасибо за кончик редактирования Byron

+0

Вы можете отредактировать этот вопрос только по одному вопросу? В этом формате трудно решить сразу несколько вопросов ... это становится беспорядком. –

ответ

0

Ну, я знаю, что это не самое лучшее решение, но я придумал следующий код, чтобы сделать список всех родительских папок, так что цикл for может использоваться с расширенным методом поиска для повторения списка. Это не самый быстрый код, но он не должен быть слишком медленным.

Sub main() 
'establishes connections 
Dim myOlApp As New Outlook.Application 
Dim objNS As Outlook.Namespace 
Dim myFolder As Outlook.MAPIFolder 
Set objNS = myOlApp.GetNamespace("MAPI") 
'pick highest folder level as original my folder 
Set myFolder = objNS.Folders("[email protected]") 

Call ProcessFolders(myFolder) 

End Sub 

Sub ProcessFolders(myFolder) 

're establish connections 
Dim myOlApp As New Outlook.Application 
Dim objNS As Outlook.Namespace 
Dim objFolder As Outlook.MAPIFolder 
Set objNS = myOlApp.GetNamespace("MAPI") 
'set up collection 
Set x = New Collection 

For Each objFolder In myFolder.Folders 
'add all parent folder names to collection 
'advanced search method will handle subfolders 
'can use a recursive call here also to get subfolders though 
    x.Add objFolder.Name 
Next 


Set objNS = Nothing 
Set myFolder = Nothing 
Set myOlApp = Nothing 

End Sub