VBA - вместо ActiveExplorer.Выбор, чтобы установить папку, явно установить путь к папке

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 

этот код переместит все сообщения электронной почты из выбранной папки в Outlook в другую папку (SavedMail). Я хотел бы отредактировать код так, чтобы вместо того, чтобы использовать текущую выбранную папку в качестве источника для сообщений, была бы жестко закодированная папка-что - то вроде Set Messages = NS.Folders("Personal Folders").Folders("Moved").

Я новичок VBA и попытался просто заменить строку Set Messages на это, что привело к ошибке во время выполнения "13": несоответствие типа, которое, как я думаю, относится к несоответствию сообщений и команд Set Messages. Я попытался использовать разные определения Dim без удачи. Я предполагаю, что кто-то, кто знает VBA, сразу увидит способ сделать это.

7
задан Jason Aller
03.03.2023 10:09 Количество просмотров материала 2610
Распечатать страницу

1 ответ

Я думаю, что проблема вы работаете в строку

If messages.count = 0 then

один раз определяя messages в папке, вы не можете рассчитывать - он хочет посчитать предметы по выбору почте. Если вам не нужно обрабатывать подобные ошибки, вы можете сократить код вот так -

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 
1
отвечен Raystafarian 2023-03-04 17:57

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх