2017-08-18 10 views
2



私は電子メールの件名に受け取った日付を追加するかなり簡単なマクロを書こうとしています。
以下のコードをコンパイルしました。これは単一の電子メールで動作します。しかし、最初のメールの後にはFor Eachループが終了しているように見えますが、これを解決する方法は全くありません。私はPickFolder行をActiveExplorer.Selection行で変更しようとしました。まったく同じ問題です。VBA - For eachループは最初の項目の後に終了します

Sub SelectedMailItemsSubjectWithDate() 
     Dim objMainFolder As Outlook.Folder 
     Dim MObj As Outlook.MailItem 


     Set objMainFolder = Outlook.Application.Session.PickFolder 

      For Each MObj In objMainFolder.Items 
       'Adds the date to the subject 
       MObj.Subject = Format(MObj.ReceivedTime, "YYYYMMDD") & " - " & MObj.Subject 
      Next MObj 
    End Sub 

私にこれを手伝ってくれる人はいますか?私は多くの義務があります!


私が日付を追加しようとしているのは、ファイルの件名行以外の何も表示されないオンラインストレージで.msg形式で何千もの電子メールをアーカイブする必要があるからです。

+0

、どのように多く見ることがイミディエイトウィンドウ( 'CTRL + G')にobjMainFolder.Items.Count''実行してみてくださいアイテムがピックアップされます。 1つだけの場合はエラー、それ以上の場合は何か他のものが停止します。 – vacip

+0

ありがとうございます - 私は、直接のウィンドウであなたのコードを実行したと4(私のテストフォルダ内のメールの実際の数)です。 –

+0

いくつかのエラー処理コードを入れてみることもできますが、何らかのエラーが発生している可能性があります。このリンクは役に立ちます。 http://analystcave.com/vba-proper-vba-error-handling/ –

答えて

1

として、あなたは知っていますか唯一つの項目が処理され秒を待って?コードをステップ実行して、ループが途中で終了することを確認していますか?または、1つのアイテムのみが変更されていますか?あなたがアイテムを保存する必要があります後者の場合:?コードが実行され、一時停止した場合

MObj.Subject = Format(MObj.ReceivedTime, "YYYYMMDD") & " - " & MObj.Subject 
MObj.Save 
+0

これはそれでした - ありがとう!これは私に多くの時間を救うつもりです、歓声! –

1

は、一般的なObjectむしろOutlook.MailItemよりとしてMObjを宣言 - あなたは、フォルダ内の他のアイテムを持つことができる、などReportItemMeetingItem

+0

その真実を語っているが、OPがタイプミスマッチ*エラーに直面しない限り、これは修正されていない。 –

+0

残念ながら、これはうまくいきません。入力いただきありがとうございます! –

+0

@ Mat's Mug - 例外が無視された場合、ループは2番目のアイテムに救済され、1つのアイテムだけが処理されるという印象を与えます。 –

関連する問題