Ошибка несоответствия типов при обращении к папке с помощью PickFolder

Следующее предполагается запустить средство выбора всплывающей папки, а затем переместить текущий элемент в выбранную папку.

 Sub MoveItems()
     Dim myNameSpace As Outlook.NameSpace
     Dim myInbox As Outlook.Folder
     Dim mySubFolder As Outlook.Folder
     Dim myDestFolder As Outlook.Folder
     Dim myItem As Object

     Set myNameSpace = Application.GetNamespace("MAPI")
     Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
     Set mySubFolder = myNameSpace.PickFolder
     Set myDestFolder = myInbox.Folders(mySubFolder)
     Set myItem = GetCurrentItem()

     myItem.Move myDestFolder

End Sub

Я получаю несоответствие типов на линии

Set myDestFolder = myInbox.Folders(mySubFolder)

1 ответ

Решение

Эта строка должна быть Set myDestFolder = mySubFolder

Вы можете также использовать If mySubFolder Is Nothing Then Exit Sub на тот случай, если пользователь решит отменить myNameSpace.PickFolder так что вы не получите run-time error

Option Explicit
Sub MoveItems()
     Dim myNameSpace As Outlook.NameSpace
     Dim myInbox As Outlook.Folder
     Dim mySubFolder As Outlook.Folder
     Dim myDestFolder As Outlook.Folder
     Dim myItem As Object

     Set myNameSpace = Application.GetNamespace("MAPI")
     Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
     Set mySubFolder = myNameSpace.PickFolder

    If mySubFolder Is Nothing Then Exit Sub

     Set myDestFolder = mySubFolder
     Set myItem = GetCurrentItem()

     myItem.Move myDestFolder

End Sub

Function GetCurrentItem() As Object
    Dim objApp As Outlook.Application

    Set objApp = Application
    On Error Resume Next
    Select Case TypeName(objApp.ActiveWindow)
        Case "Explorer"
            Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
        Case "Inspector"
            Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
    End Select

    Set objApp = Nothing
End Function

Функция ничего

IsNothing возвращает True, если выражение представляет переменную объекта, которой в настоящее время не присвоен объект; в противном случае возвращается False.

Другие вопросы по тегам