2016-01-15 66 views
0

下面的行不適用於我的子文件夾。它只顯示添加,應用程序,類,計數等,但並沒有真正提示我使用移動功能。無法將電子郵件移至其他文件夾

objItems.Move objDestFolder 

下面是代碼的其餘部分:

Sub MoveEmail() 

Dim objNS As NameSpace 
Dim objFolder As MAPIFolder 
Dim objDestFolder As MAPIFolder 
Dim obj As Object 
Dim objOL As Outlook.Application 
Dim objItems As Outlook.items 

    Set objOL = Outlook.Application 
    Set objNS = objOL.Application.Session 

'specify the Inbox Folder you want to extract the email 
Set objFolder = objNS.GetDefaultFolder(olFolderInbox).Folders("For Processing") 
Set objItems = objFolder.items 

Set objDestFolder = objNS.GetDefaultFolder(olFolderInbox).Folders("For Temp") 

For Each obj In objItems 
    If obj.Class = olMail Then 
     objItems.Move objDestFolder 

     Set obj = Nothing 
     Set objItems = Nothing 
     Set objFolder = Nothing 
     Set objOL = Nothing 
     Set objDestFolder = Nothing 

    End If 

Next 

End Sub 

回答

1

您正在對Items對象調用Move,而不是MailItem。如果您正在修改集合,您也不應該使用「for each」。使用下行循環。 更改您的代碼到

For i = objItems.Count to 1 step -1 
    set obj = objItems.Item(I) 
    If obj.Class = olMail Then 
     obj.Move objDestFolder 
    End If 
Next 
+0

工程就像一個魅力謝謝!我也在使用一個提取電子郵件到excel的代碼。我是否也應該使用下行循環? '對於每個物鏡在objItems' '如果obj.Class = olMail Then' 'myXLApp.Worksheets( 「工作表Sheet」)。細胞(I,1)=格式(obj.ReceivedTime中,「mm /日/年「)單元格(i,3)= obj.Subject' 'myXLApp.Worksheets(」Sheet1「)。工作表(「Sheet1」)單元格(i,5)= ActiveAgnt' 'i = i + 1' 'End If' – Wilson

+0

如果您只讀取數據,則可以使用「for each」或up「for 「循環。 –

0

真的不知道爲什麼您使用的是For Each環,但隨後設置你要遍歷更不用說集合變量,一旦你迭代的對象是一個郵件項目?

無論如何,我不相信您可以一次移動整個文件夾,因此IntelliSense不會爲您提供將該方法與對象一起使用的選項。

您需要遍歷文件夾中的每個郵件項目並逐個移動它們。

For Each obj In objItems 
    If obj.Class = olMail Then 
     obj.Move objDestFolder  
    End If 
Next obj 
+0

下一次我這樣做,我要切換到100%下循環。 – niton

相關問題