2016-03-25 20 views
0

'u otomatikleştirirken en son e-postayı görüntülemiyor Bir e-postayı almak ve kontrol etmek için aşağıdaki kodu kullanıyorum, ancak e-posta 12/22'den başlayıp en son veya en eski olan postaları geri gönderirken en eski postayı almasını sağlayın.Outlook,

Set oapp = CreateObject("Outlook.Application") 
Set oMAPI = oapp.GetNamespace("MAPI") 
Set oInbox = oMAPI.GetDefaultFolder(6) 
oInbox.Display 
Set oallmails = oInbox.Items 
Set oreqemail = oallmails.GetFirst 
For oTotalmail = 1 To oallmails.Count 
    ostringmatch = oreqemail.Subject 
    'Using regex function to match 
    'If MatchString(ostringmatch,"89554 Completed") Then 
    'End If 
'Exit For 
Set oreqemail = oallmails.GetNext 
Next 

Kod görünmüyor gibi herhangi bir görünüm ayarını kaçırmıyorum. Teşekkürler

+0

İş arkadaşınızın bilgisayarında çalışır, ancak sizinki değil mi? İlk önce şüphe duyardım: Set oInbox = oMAPI.GetDefaultFolder (6). Klasör düzenlerinizin farklı olması mümkündür. – vbnet3d

+0

Üzerinde ikinci düşünce ... Posta, bu klasördeki en eski postadan 12/22 mi? – vbnet3d

cevap

1

Outlook'ta her zaman en yeni veya en eski e-postayı aldığınızdan emin olmak için, Items sınıfının Sort yöntemini kullanmanız gerekir. Öğelerin koleksiyonunu belirtilen özellik tarafından sıralar. Bu yöntemin tamamlanmasıyla koleksiyonun endeksi 1'e sıfırlanır. Örneğin, parantez içine alınabilecek sırasının, "[CompanyName]" gibi adı.

Not, Sıralama sadece koleksiyondaki öğelerin sırasını etkiler. Gezgini görünümünde öğelerin sırasını etkilemez.

Set oapp = CreateObject("Outlook.Application") 
Set oMAPI = oapp.GetNamespace("MAPI") 
Set oInbox = oMAPI.GetDefaultFolder(6) 
oInbox.Display 
Set oallmails = oInbox.Items 
oallmails.Sort "[RecievedTime]" 
Set oreqemail = oallmails.GetFirst 
For oTotalmail = 1 To oallmails.Count 
    ostringmatch = oreqemail.Subject 
    'Using regex function to match 
    'If MatchString(ostringmatch,"89554 Completed") Then 
    'End If 
    'Exit For 
    Set oreqemail = oallmails.GetNext 
Next 

fazla bilgi için Outlook VBA: How to sort emails by date and open the latest email found? bakınız.

+0

Teşekkürler, sıralama yönteminin QTP'de (kullandığım araç) görünüm için oluşturulmadığını düşünüyorum. Çalışma sırasında geçersiz mülk diyor. Çok sayıda kombinasyon -DueDtae, UnRead vb çalıştı, ama işe yaramadı. Her neyse ben kodu değiştirdi ve şimdi bana en son e-posta alma ve doğru bir şekilde döngü .---- hat 7 - Set oreqemail = oallmails.GetLast, 2. satır son - Set oreqemail = oallmails.GetPrevious – Harman