VBA - Em vez de ActiveExplorer.Selection para definir a pasta, defina explicitamente o caminho da pasta

0
Sub MoveItems() 
    Dim Messages As Selection 
    Dim Msg As MailItem 
    Dim NS As NameSpace 
    Set NS = Application.GetNamespace("MAPI") 
    Set Messages = ActiveExplorer.Selection 
    If Messages.Count = 0 Then
      Exit Sub 
    End If 
    For Each Msg In Messages 
      Msg.Move NS.Folders("Personal Folders").Folders("SavedMail") 
    Next
End Sub 

Este código moverá todas as mensagens de e-mail da pasta atualmente selecionada no Outlook para outra pasta (SavedMail). Gostaria de editar o código para que, em vez de usar a pasta atualmente selecionada como fonte das mensagens, houvesse uma pasta codificada - algo como Set Messages = NS.Folders("Personal Folders").Folders("Moved") .

Sou um novato em VBA e tentei apenas substituir a linha Set Messages por isso, o que resultou em um erro em tempo de execução '13': Incompatibilidade de tipo que, na minha opinião, se refere a uma incompatibilidade dos comandos Dim Messages e Set Messages. Eu tentei usar diferentes definições Dim sem sorte. Eu estou supondo que alguém que conhece o VBA verá a maneira de fazer isso imediatamente.

    
por Mike 01.06.2014 / 23:27

1 resposta

1

Acho que o problema que você está enfrentando é a linha

If messages.count = 0 then

Depois de definir messages como uma pasta, você não poderá contá-la. Ela deseja contar uma seleção de itens de e-mail. A menos que você precise lidar com erros como esse, você pode cortar o código desse jeito -

Sub MoveItems() 
    Dim Msg As MailItem 
    Dim NS As NameSpace 
    Set NS = Application.GetNamespace("MAPI") 
    For Each Msg In NS.Folders("Personal Folders").Folders("Moved").Items
      Msg.Move NS.Folders("Personal Folders").Folders("SavedMail") 
    Next
End Sub 
    
por 02.06.2014 / 14:29