2014-10-07 177 views
0

当本地文件夹有5封电子邮件时,此Outlook宏应该要求用户将它们移动到公共共享文件夹并删除原来的5封电子邮件。将本地文件夹中的邮件复制到公共/共享文件夹

我不断收到下面一行中的“操作失败”错误消息。

**Set NewFolder = myFolder.CopyTo(PblcSharedFolder)** 

从评论:此行旨在复制五个电子邮件的整个文件夹。

Sub MoveEmail() 
    Dim app As New Outlook.Application 
    Dim nameSpace As Outlook.nameSpace 
    Dim currentExplorer As Outlook.Explorer 
    Dim currentSelection As Outlook.selection 
    Dim currentMailItem As MailItem 
    Dim emailCopy As MailItem 
    Dim myFolder 
    Dim PblcSharedFolder As MAPIFolder 
    Dim NewFolder As MAPIFolder 
    Dim i As Integer 
    Dim folderName 
    Dim mailboxNameString 
    Dim result 

    folderName = "Local Folder" 
    mailboxNameString = "My Inbox Name" 
    Set nameSpace = app.GetNamespace("MAPI") 
    Set currentExplorer = app.ActiveExplorer 
    Set currentSelection = currentExplorer.selection 
    Set myFolder = nameSpace.Folders(mailboxNameString).Folders("Inbox").Folders(folderName) 

    If (myFolder.Items.Count = 5) Then 
     result = MsgBox("Would you like to move the content of your Local folder to the Public-shared Folder?", vbYesNo) 

     If result = vbYes Then 

      Set PblcSharedFolder = nameSpace.GetDefaultFolder(olPublicFoldersAllPublicFolders) 
      Set PblcSharedFolder = PblcSharedFolder.Folders("Subfolder") 
      Set PblcSharedFolder = PblcSharedFolder.Folders("Public Shared Folder") 

      Set NewFolder = myFolder.CopyTo(PblcSharedFolder) 

      NewFolder.Name = "_" & nameSpace.CurrentUser.Name & " " & Now 

      For i = myFolder.Items.Count To 1 Step -1 
       myFolder.Items(i).Delete 
      Next i 

     Else 

      Stop 

     End If 
    End If 

    For i = 1 To currentSelection.Count 
     Set currentMailItem = currentSelection.Item(i) 
     Debug.Print "[" & Date & " " & Time & "] moving #" & m & _ 
        ": xfolder = " & folderName & _ 
        "; subject = " & currentMailItem.Subject & "..." 
     currentMailItem.To = nameSpace.CurrentUser.Name 
     currentMailItem.Move myFolder 
    Next i 

End Sub 

回答

0

未经测试!

If result = vbYes Then 

     Set PblcSharedFolder = nameSpace.GetDefaultFolder(olPublicFoldersAllPublicFolders) 
     Set PblcSharedFolder = PblcSharedFolder.Folders("Subfolder") 
     Set PblcSharedFolder = PblcSharedFolder.Folders("Public Shared Folder") 
     Dim myCopiedItem As Outlook.MailItem 


     For i = myFolder.Items.Count To 1 Step -1 
      Set myCopiedItem = myFolder.Items(i).Copy 
      myCopiedItem.Move PblcSharedFolder 
      myFolder.Items(i).Delete 
     Next i 
    Else 
     Stop 
    End If 

我没有说实话不太unterstand这条线是什么:

NewFolder.Name = "_" & nameSpace.CurrentUser.Name & " " & Now 
+0

,使该文件夹复制到公共/共享文件夹后,它改变了文件夹的名称作为CurrentUser的名字和日期。 – 2014-10-08 15:56:17

+0

我试图复制整个文件夹,而不仅仅是电子邮件。 – 2014-10-08 15:56:38