2017-09-04 4 views
1

Outlookの電子メールを抽出し、送信者の電子メールアドレスの一部(「@」の後で「.com」の前に)で名前を付ける必要があります。私のコードは正常に動作しますが、名前を変更する部分については、ファイルの一部が正しく割り当てられていない、特にスレッド内の電子メールが割り当てられています。私は過去2週間の解決策を探してみましたが、失敗しました。この問題に関して誰かが私を助けることができれば感謝します。ありがとう!間違った送信者の電子メールアドレスの抽出/割り当て

[UPDATED]: スレッド内:元のメールから始まるすべての後続の返信の実行リストです。

私は指定された場所に電子メールを抽出するためのコードを書いており、抽出後、その電子メールの名前は "company's name_datetime received_title of email"とする必要があります。ユーザー名送信者の電子メールアドレスから抽出するとします。たとえば、[email protected]から電子メールを受け取った場合、件名ヘッダーは「プロジェクト」です。抽出を実行すると、名前変更の方法は「会社A_12-08-2017 09:30 AM_Project」になります。

しかし、現在のコードでは、電子メールの中には会社名の異なるもの、特にスレッド内の電子メールの名前が付けられます。たとえば、[email protected]は「Project」というタイトルのメールを送信し、I([email protected])は返信し、タイトルは「RE:Project」になります。抽出を実行すると、電子メール "プロジェクト"の名前変更方法は正しいですが、電子メール "RE:プロジェクト"では、名前変更の結果は会社Cがその電子メールにも存在しない "companyC_datetime received_RE:Project" 。 (C社は他の電子メールに由来しています)。

Set SubFolder = OutlookApp.Session.GetFolderFromID(EntryID(i), StoreID(i)) 
    On Error Resume Next 
    For j = 1 To SubFolder.Items.Count 
     Set MItem = SubFolder.Items(j) 
     strEmail = Split(SubFolder.Items(j).SenderEmailAddress, "@")(1) 
     If (InStr(1, strEmail, ".") > 0) Then 
      strFullName = Split(strEmail, ".")(0) 
     End If 
     StrReceived = Format(MItem.ReceivedTime, "dd-mm-yyyy H.MMAMPM") 
     strSubject = MItem.Subject 
     'Rename file as Bank name_Date_Title 
     StrName = StripIllegalChar(strSubject) 
     StrFile = StrSaveFolder & strFullName & "_" & StrReceived & "_" & StrName & ".msg" 
     StrFile = Left(StrFile, 256) 
     MItem.SaveAs StrFile, 3 
    Next j 
    On Error GoTo 0 
Next i 
+0

質問を編集して、過去2週間を試してみてください。また、「スレッド内」という意味を説明してください。希望の入力と一致する出力の例を提供してください。最後に、https://stackoverflow.com/help/mcveをお読みください –

+1

@MaciejJureczko私は上記の私の質問を編集しました。ありがとう! – Cheese

答えて

0

On Error Resume Nextは予期しないエラーです。

MItemオブジェクトがメールアイテムでない場合、予期しないエラーが発生する可能性があります。

もしそうなら、この行は失敗します。

strEmail = Split(SubFolder.Items(j).SenderEmailAddress, "@")(1) 

ここで、On Error Resume Nextを誤って使用するため、エラーを修正する機会はありません。 strEmailは、エラーの前の状態にとどまります。

Dim MItem as object 
If MItem.class = olMail then 
関連する問題