2016-08-29 4 views
1

Ich habe ein Makro erstellt, das auf meinem Computer funktioniert. Wenn ich es auf einen anderen Computer hochlade und ausführe, kann es keine E-Mails finden.VBA kann keine E-Mails in Outlook mit. Finden

Set olApp = GetObject(, "Outlook.Application") 
Set olNs = olApp.GetNamespace("MAPI") 
Set olFldr = olNs.GetDefaultFolder(olFolderInbox) 
Set olItms = olFldr.Items 
Set olEmail = olApp.CreateItem(olMailItem) 


Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 


      subj = "Test email" 

       Set olMi = olItms.Find("[Subject] = " & Chr(34) & subj & Chr(34)) 
       If Not (olMi Is Nothing) Then 
         For Each olAtt In olMi.Attachments 
       Else 
        ' ends up here everytime 

Ich habe mir eine E-Mail „Test E-Mail“ genannt, und ich kann es in meinem Outlook-Posteingang, aber mein Makro sehe es nie finden (auf jedem Computer, den ich das Makro laden). Wenn ich jedoch das Programm auf dem ursprünglichen Computer ausführe, auf dem ich das Programm geschrieben habe, funktioniert es einwandfrei. Nicht wirklich sicher, was das Problem ist.

+0

auf dem Code der Suche es es ist in Ordnung, erscheint. Ich würde testen, um sicherzustellen, dass der Betreff tatsächlich "Test-E-Mail" ist. Versuchen Sie, über jede E-Mail-Nachricht zu iterieren und die Betreffzeile auszudrucken, um sicher zu sein, dass es nicht so aussieht, als würde sie es finden. –

+0

Was ist der Unterschied zwischen Computer? Wie hast du den Code von deinem Computer auf den anderen übertragen? – 0m3r

+0

@ Om3r - Ich habe es gemailt. Ich habe es auch in eine Drop-Box gelegt, um über mehrere Computer darauf zugreifen zu können. Der einzige wirkliche Unterschied ist, dass ein Computer ein Dell ist und der andere ein HP. Die Betriebssysteme sind identisch und Microsoft Office 2013 ist auf beiden. – Ken

Antwort

0

Versuchen auf der PR_NORMALIZED_SUBJECT MAPI-Eigenschaft zu suchen:

set olMi = olItms.Find("@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0E1D001F"" = '" & subj & "'") 
+0

Danke. Meine Erfahrung mit VBA ist ein bisschen begrenzt. Was genau macht diese Codezeile genau? – Ken

+0

Es wird nach der PR_NORMALIZED_SUBJECT-Eigenschaft statt PR_SUBJECT (die nicht indiziert ist) gesucht. Da PR_NORMALIZED_SUBJECT nicht über OOM verfügbar gemacht wird, müssen Sie den Namen der Eigenschaft DASL-Eigenschaft in Anführungszeichen angeben und die Abfrage mit "@ SQL =" voranstellen. –