Ошибка времени выполнения Outlook VBA & ldquo; -2147024809 & rdquo; Перемещение почты в SentMail-папку

После поиска ответов, я думаю, эта страница может быть полезна. https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation Не уверен в истории слияния декларации, но это объясняет, почему следующее может работать.

declare global {
    interface Window { MyNamespace: any; }
}

window.MyNamespace = window.MyNamespace || {};

1
задан Ineedhelpbecauseiamstupid 15 March 2019 в 10:27
поделиться

2 ответа

Ответ Дмитрия Стребленченко сработал! Вот как я это сделал, если у кого-то возникла такая же проблема:

Option Explicit
Private WithEvents inboxItems As Outlook.Items
Private Sub Application_Startup()
    Dim outlookApp As Outlook.Application
    Dim objectNS As Outlook.NameSpace

    Set outlookApp = Outlook.Application
    Set objectNS = outlookApp.GetNamespace("MAPI")
    Set inboxItems = objectNS.GetDefaultFolder(olFolderSentMail).Items
End Sub

Sub inboxItems_ItemAdd(ByVal Item As Object)
    If TypeName(Item) = "MailItem" Then
         If Item.SenderName = "SENDERNAME" Then
             Dim NS As Outlook.NameSpace
             Dim objOwner As Outlook.Recipient
             Dim newFolder As Outlook.Folder
             Dim colStores As Outlook.Stores
             Dim oStore As Outlook.Store
             Dim oRoot As Outlook.Folder

             Set NS = Application.GetNamespace("MAPI")
             Set objOwner = NS.CreateRecipient("secondary@email.de")
             Set colStores = Application.Session.Stores

             For Each oStore In colStores
                Set oRoot = oStore.GetRootFolder
                If oStore = "SECONDARY EMAIL NAME" Then
                    Call EnumerateFolders(oRoot, Item)
                End If
             Next
         End If
    End If
End Sub

Sub EnumerateFolders(ByVal oFolder As Outlook.Folder, Item)
    Dim folders As Outlook.folders
    Dim Folder As Outlook.Folder
    Dim foldercount As Integer

    Set folders = oFolder.folders
    foldercount = folders.Count

    For Each Folder In folders
        If Folder.FolderPath = "\\SECONDARY EMAIL NAME\Sent Items" Then
            Item.Move Folder
        End If
    Next
End Sub
0
ответ дан Ineedhelpbecauseiamstupid 15 March 2019 в 10:27
поделиться

Ошибка MAPI_E_INVALID_PARAMETER. Скорее всего, это означает, что указанный почтовый ящик не является почтовым ящиком Exchange или принадлежит другой организации Exchange.

Если этот почтовый ящик уже открыт в текущем профиле, вы можете получить доступ к объекту Store (и использовать Store.GetDefaultFolder) из коллекции Namespace.Stores.

0
ответ дан Dmitry Streblechenko 15 March 2019 в 10:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: