使用 PickFolder 引用文件夹时出现类型不匹配错误
Type Mismatch Error when referencing Folder with 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)
那一行应该是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 returns True if the expression represents an object variable that currently has no object assigned to it; otherwise, it returns False.
下面应该启动弹出式文件夹选择器,然后将当前项目移动到所选文件夹。
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)
那一行应该是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 returns True if the expression represents an object variable that currently has no object assigned to it; otherwise, it returns False.