2016-08-29 4 views
1

私のコンピュータでうまく動作するマクロを作成しました。アップロードして別のコンピュータで実行すると、電子メールを見つけることができません。VBAは.Findを使用してOutlookで電子メールを見つけることができません

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 

私は自分自身に「テストメール」と呼ばれる電子メールを送り、私は私の見通しの受信トレイにそれを見ることができますが、私のマクロは、(私はマクロへのアップロードの任意のコンピュータ上で)それを見つけることはできません。しかし、私がプログラムを書いた元のコンピュータでプログラムを実行すると、正常に動作します。問題が何であるかは分かりません。

+0

。私はSubjectが実際に "Test Email"であることを確認するためにテストします。各メールアイテムを繰り返し処理し、件名を印刷して確認してください。見つからないようです。 –

+0

コンピュータの違いは何ですか?どのようにコードをコンピュータから他のコンピュータに転送しましたか? – 0m3r

+0

@ Om3r - 私はそれを電子メールで送った。私もドロップボックスに置いて、複数のコンピュータからアクセスしました。唯一の違いは唯一のコンピュータはデルで、もう1台はHPです。 OSは同じもので、Microsoft Office 2013は両方にあります。 – Ken

答えて

0

はPR_NORMALIZED_SUBJECT MAPIプロパティで検索してみてください:大丈夫です表示されたコードを見てみると

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

ありがとうございます。 VBAに関する私の経験は少し限られています。このコード行は正確に何をしているのですか? – Ken

+0

PR_SUBJECTの代わりにPR_NORMALIZED_SUBJECTプロパティを検索しています(これは索引付けされていません)。 PR_NORMALIZED_SUBJECTはOOMを介して公開されないため、プロパティのDASLプロパティ名を二重引用符で指定し、クエリの先頭に "@ SQL ="を付ける必要があります。 –

関連する問題