如何按名称引用文件夹?
How to reference a folder by name?
当我尝试打开一个非默认邮件文件夹时,我得到了
Compile Error: Type Mismatch
发生在Set oMailBox
。
Sub openSxxInbox()
Dim oOutlook As Outlook.Application
Dim oFolder As Outlook.Folder
Dim oMailBox As Outlook.Folder
Dim oFldr As Outlook.Folder
Set oOutlook = CreateObject("Outlook.Application")
Set oNS = oOutlook.GetNamespace("MAPI")
Set oMailBox = "Sxx"
Set oFldr = "Inbox"
oNS.Logon 'does not do anything if Outlook is already running
Set oFolder = oNS.Folders(oMailBox).Folders(oFldr)
If (oOutlook.ActiveExplorer Is Nothing) Then
oFolder.Display
Else
Set oOutlook.ActiveExplorer = oFolder
End If
End Sub
在代码中,您可能会发现以下行:
Dim oMailBox As Outlook.Folder
稍后您尝试分配一个不正确的字符串值:
Set oMailBox = "Sxx"
Set oFldr = "Inbox"
文件夹对象和字符串之间没有直接转换。您可以使用 NameSpace.GetDefaultFolder 方法,其中 returns 一个 Folder
对象,表示当前配置文件所请求类型的默认文件夹;例如,获取当前登录用户的默认收件箱文件夹。
请注意,您可能会发现 Store.GetDefaultFolder 方法很有用,其中 returns 一个 Folder
对象代表商店中的默认文件夹,并且是 FolderType
参数。此方法类似于 NameSpace
对象的 GetDefaultFolder
方法。不同之处在于此方法获取与帐户关联的交付商店中的默认文件夹,而 NameSpace.GetDefaultFolder
returns 当前配置文件的默认商店中的默认文件夹。
也可以在代码中将对象定义为字符串:
Sub openSxxInbox()
Dim oOutlook As Outlook.Application
Dim oFolder As Outlook.Folder
Dim oMailBox As string
Dim oFldr As string
Set oOutlook = CreateObject("Outlook.Application")
Set oNS = oOutlook.GetNamespace("MAPI")
oMailBox = "Sxx"
oFldr = "Inbox"
oNS.Logon 'does not do anything if Outlook is already running
Set oFolder = oNS.Folders(oMailBox).Folders(oFldr)
If (oOutlook.ActiveExplorer Is Nothing) Then
oFolder.Display
Else
Set oOutlook.ActiveExplorer = oFolder
End If
End Sub
当我尝试打开一个非默认邮件文件夹时,我得到了
Compile Error: Type Mismatch
发生在Set oMailBox
。
Sub openSxxInbox()
Dim oOutlook As Outlook.Application
Dim oFolder As Outlook.Folder
Dim oMailBox As Outlook.Folder
Dim oFldr As Outlook.Folder
Set oOutlook = CreateObject("Outlook.Application")
Set oNS = oOutlook.GetNamespace("MAPI")
Set oMailBox = "Sxx"
Set oFldr = "Inbox"
oNS.Logon 'does not do anything if Outlook is already running
Set oFolder = oNS.Folders(oMailBox).Folders(oFldr)
If (oOutlook.ActiveExplorer Is Nothing) Then
oFolder.Display
Else
Set oOutlook.ActiveExplorer = oFolder
End If
End Sub
在代码中,您可能会发现以下行:
Dim oMailBox As Outlook.Folder
稍后您尝试分配一个不正确的字符串值:
Set oMailBox = "Sxx"
Set oFldr = "Inbox"
文件夹对象和字符串之间没有直接转换。您可以使用 NameSpace.GetDefaultFolder 方法,其中 returns 一个 Folder
对象,表示当前配置文件所请求类型的默认文件夹;例如,获取当前登录用户的默认收件箱文件夹。
请注意,您可能会发现 Store.GetDefaultFolder 方法很有用,其中 returns 一个 Folder
对象代表商店中的默认文件夹,并且是 FolderType
参数。此方法类似于 NameSpace
对象的 GetDefaultFolder
方法。不同之处在于此方法获取与帐户关联的交付商店中的默认文件夹,而 NameSpace.GetDefaultFolder
returns 当前配置文件的默认商店中的默认文件夹。
也可以在代码中将对象定义为字符串:
Sub openSxxInbox()
Dim oOutlook As Outlook.Application
Dim oFolder As Outlook.Folder
Dim oMailBox As string
Dim oFldr As string
Set oOutlook = CreateObject("Outlook.Application")
Set oNS = oOutlook.GetNamespace("MAPI")
oMailBox = "Sxx"
oFldr = "Inbox"
oNS.Logon 'does not do anything if Outlook is already running
Set oFolder = oNS.Folders(oMailBox).Folders(oFldr)
If (oOutlook.ActiveExplorer Is Nothing) Then
oFolder.Display
Else
Set oOutlook.ActiveExplorer = oFolder
End If
End Sub