Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将邮件从本地文件夹复制到公用/共享文件夹_Vba_Outlook_Outlook 2013 - Fatal编程技术网

Vba 将邮件从本地文件夹复制到公用/共享文件夹

Vba 将邮件从本地文件夹复制到公用/共享文件夹,vba,outlook,outlook-2013,Vba,Outlook,Outlook 2013,当本地文件夹有5封电子邮件时,此Outlook宏应要求用户将其移动到公共共享文件夹并删除原来的5封电子邮件 我在下面的行中不断收到此操作失败的错误消息 **Set NewFolder = myFolder.CopyTo(PblcSharedFolder)** 来自评论:这一行的意思是复制五封电子邮件的整个文件夹 Sub MoveEmail() Dim app As New Outlook.Application Dim nameSpace As Outlook.nameSpa

当本地文件夹有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
未经测试

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
老实说,我并不完全理解这句话的目的:

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

因此,在将文件夹复制到公共/共享文件夹后,它会将文件夹名称更改为当前用户的名称和日期。我正在尝试复制整个文件夹,而不仅仅是电子邮件。