2014-01-30 2 views
0

Outlook 폴더에서 검색을 수행하고 해당 항목의 본문을 하나의 항목으로 묶어서 (해당 사례에 대한 기록을 작성) 코드를 작성합니다.Outlook VBA 정렬 기준 날짜

Find 메서드를 사용하여 검색을 수행하고 있습니다 (모두 올바른지 확실하지 않음). 일단 검색 결과를 얻으면 배열에 넣을 것입니다.

배열을 날짜순으로 정렬하는 방법이 있습니까? 나는 아래의 코드 오류가 계속 :

Dim olApp As Outlook.Application 
Dim olNs As Outlook.Namespace 
Dim olFldr As Outlook.MAPIFolder 
Dim olItms As Outlook.Items 
Dim olMail As Variant 
Dim MyArray() As String 


Set olApp = New Outlook.Application 
Set olNs = olApp.GetNamespace(”MAPI”) 
Set olFldr = olNs.GetDefaultFolder(olFolderInbox) 
Set olItms = olFldr.Items 


Set olMail = myTasks.Find("[Subject] = ""*140115LS*""") 
    If Not (olMail Is Nothing) Then 

MyArray = olMail.Display 
+0

'myItems.Find (...)'가 아니라 'olItms.Find (...)'를 의미합니까? –

+0

오, 예, 몇 분 전에 변수를 변경했습니다. Tks! 날짜별로 정렬 할 수있는 방법에 대한 의견이 있으십니까? – AndroidDev

답변

1
'... 
Dim sFilter as string 
sFilter = "@SQL=""urn:schemas:mailheader:subject"" like '%140115LS%' " 

Set olFldr = olNs.GetDefaultFolder(olFolderInbox) 

Set olItms = olFldr.Items 
Set olMail = olItms.Find(sFilter) 

Do While Not olMail Is Nothing 
    'add to array... 

    Set olMail = olItms.FindNext 
Loop 
'... 
+0

이것은 작동하지 않습니다. olFldr.Items를 호출 할 때마다 이전 인스턴스를 전혀 모르는 새로운 COM 객체가 반환됩니다. Items 객체의 차이 인스턴스에서 FindNext를 호출하게됩니다. 원래 포스터와 마찬가지로 Items 컬렉션을 별도의 변수에 캐시해야합니다. –

+0

@DmitryStreblechenko - 감사합니다 - 내 응답을 편집합니다 –

0

전화 olItms.Sort("[ReceivedTime]")을 찾기를 호출하기 전에. FindNext가 null을 반환 할 때까지 루프에서 FindNext를 호출해야합니다.

+0

ollums.Sort ("[ReceivedTime]") ... ReceivedDate는 Outlook 2013의 속성이 아닙니다. (하지만 어쩌면 이전 버전이었을 것입니다) – lukehawk

+0

예, 당신 말이 맞아요, 그것은 ReceivedTime입니다. 나는 대답을 업데이트했다. –