Vb.net 通过OLE自动化(VFP或VB)在Outlook中创建文件夹
我想使用OLE自动化在收件箱、发送、垃圾箱文件夹旁边添加一些新文件夹。我的首选语言是VFP,但VB可能也很有用 下面是我在应用程序对象中挖掘了多远来找出这一点Vb.net 通过OLE自动化(VFP或VB)在Outlook中创建文件夹,vb.net,ole,visual-foxpro,Vb.net,Ole,Visual Foxpro,我想使用OLE自动化在收件箱、发送、垃圾箱文件夹旁边添加一些新文件夹。我的首选语言是VFP,但VB可能也很有用 下面是我在应用程序对象中挖掘了多远来找出这一点 loApp = CREATEOBJECT("outlook.application") loSpace = loApp.GetNameSpace("MAPI") UU = "" FOR EACH loFolder IN loSpace.Folders IF NOT LOWER(loFolder.Name)$"outloo
loApp = CREATEOBJECT("outlook.application")
loSpace = loApp.GetNameSpace("MAPI")
UU = ""
FOR EACH loFolder IN loSpace.Folders
IF NOT LOWER(loFolder.Name)$"outlook data file archives wek@santaclaus.com "
*? "______________________________"
*? loFolder.Name
*? CHR(9)+"-----"
IF LOWER(loFolder.NAME) = LOWER("davidcosmos@metaworld.com")
? loFolder.NAME && This is where the Accounts
FOR EACH loSubFolder IN loFolder.Folders
? CHR(9)+loSubFolder.Name+"-----"
SET STEP ON
IF loSubFolder.Name = "Inbox"
FOR EACH Email IN loSubFolder.Items
* Here the Email object represents each Email
ENDFOR
ELSE
ENDIF
ENDFOR
ELSE
ENDIF
ELSE
ENDIF
ENDFOR
- 我假设文件夹的创建应该在loSubFolder层完成
DK它应该像使用文件夹一样简单。添加方法,这里是Excel VBA链接,但该方法也应该在OLE中可用: 因此,在您的情况下,您可以找到要向其中添加新文件夹的文件夹(或子文件夹,它仍然是一个文件夹),并调用以下内容:
loSubFolder.Folders.Add("new folder name")
如果不在Add方法中指定第二个参数,它将创建一个文件夹,其中包含与其父项相同的项目类型,在本例中为loSubFolder中的项目类型
还可以指定第二个参数,该参数是几个显式指定的OldDefaultFolders常量之一,例如:
loSubFolder.Folders.Add("new folder name", olFolderInbox)
它应该与使用文件夹一样简单。添加方法,这是Excel VBA链接,但该方法也应该在OLE中可用: 因此,在您的情况下,您可以找到要向其中添加新文件夹的文件夹(或子文件夹,它仍然是一个文件夹),并调用以下内容:
loSubFolder.Folders.Add("new folder name")
如果不在Add方法中指定第二个参数,它将创建一个文件夹,其中包含与其父项相同的项目类型,在本例中为loSubFolder中的项目类型
还可以指定第二个参数,该参数是几个显式指定的OldDefaultFolders常量之一,例如:
loSubFolder.Folders.Add("new folder name", olFolderInbox)
在下面的代码中,我们添加了两个文件夹,一个在默认收件箱下,另一个在与收件箱本身相同的级别。另外请注意,您可能有多个存储区,因此有多个收件箱,我们使用的是默认收件箱所在的存储区
#Define olFolderInbox 6
Local oOutlook As 'Outlook.Application', ;
oNameSpace As 'Outlook.NameSpace', ;
oMailFolder As 'Outlook.MAPIFolder', ;
oTopFolder As 'Outlook.MAPIFolder'
Local lcFolderName1, lcFolderName2
lcFolderName1 = "My Dummy Folder - inbox"
lcFolderName2 = "My Dummy Folder"
m.oOutlook = createobject("Outlook.Application")
m.oNameSpace = m.oOutlook.GetNamespace("MAPI")
m.oMailFolder = m.oNameSpace.GetDefaultFolder( olFolderInbox )
m.oTopFolder = m.oMailFolder.Parent
If Type("m.oMailFolder.Folders(m.lcFolderName1).Name") != 'C'
m.oMailFolder.Folders.Add(m.lcFolderName1, olFolderInbox)
Endif
If Type("m.oTopFolder.Folders(m.lcFolderName2).Name") != 'C'
m.oTopFolder.Folders.Add(m.lcFolderName2, olFolderInbox)
Endif
MessageBox('Done')
注意:要使其工作,Outlook不应已在运行。你可能希望用try…catch…endtry来包装。我不建议使用GetObject来克服这一点,我真的怀疑它是否会起作用(我从不建议将GetObject用于任何COM)
注2:如果您需要的文件夹不是默认收件箱所在的文件夹,则可以按如下方式获得:
m.MyFolder = m.oNameSpace.Folders("My Desired Folder")
在下面的代码中,我们添加了两个文件夹,一个在默认收件箱下,另一个在与收件箱本身相同的级别。另外请注意,您可能有多个存储区,因此有多个收件箱,我们使用的是默认收件箱所在的存储区
#Define olFolderInbox 6
Local oOutlook As 'Outlook.Application', ;
oNameSpace As 'Outlook.NameSpace', ;
oMailFolder As 'Outlook.MAPIFolder', ;
oTopFolder As 'Outlook.MAPIFolder'
Local lcFolderName1, lcFolderName2
lcFolderName1 = "My Dummy Folder - inbox"
lcFolderName2 = "My Dummy Folder"
m.oOutlook = createobject("Outlook.Application")
m.oNameSpace = m.oOutlook.GetNamespace("MAPI")
m.oMailFolder = m.oNameSpace.GetDefaultFolder( olFolderInbox )
m.oTopFolder = m.oMailFolder.Parent
If Type("m.oMailFolder.Folders(m.lcFolderName1).Name") != 'C'
m.oMailFolder.Folders.Add(m.lcFolderName1, olFolderInbox)
Endif
If Type("m.oTopFolder.Folders(m.lcFolderName2).Name") != 'C'
m.oTopFolder.Folders.Add(m.lcFolderName2, olFolderInbox)
Endif
MessageBox('Done')
注意:要使其工作,Outlook不应已在运行。你可能希望用try…catch…endtry来包装。我不建议使用GetObject来克服这一点,我真的怀疑它是否会起作用(我从不建议将GetObject用于任何COM)
注2:如果您需要的文件夹不是默认收件箱所在的文件夹,则可以按如下方式获得:
m.MyFolder = m.oNameSpace.Folders("My Desired Folder")
我真的很感谢你的精心安排。我的问题是,这对只有一个电子邮件帐户的人来说是好的。我有20多个账户。我需要根据需要将电子邮件移动到新文件夹中。如何导航到正确的帐户或电子邮件地址?我不知道如何更改帐户。我非常感谢您的精心设计。我的问题是,这对只有一个电子邮件帐户的人来说是好的。我有20多个账户。我需要根据需要将电子邮件移动到新文件夹中。如何导航到正确的帐户或电子邮件地址?我不知道如何更改帐户。我可以按照您的指定将文件夹添加到两个级别。非常感谢。现在我只需要弄清楚如何将选定的电子邮件移动到这些文件夹中。但最好是为此提出一个新问题。谢谢你的帮助。我为延迟响应道歉…我能够按照您的指定在两个级别中添加一个文件夹。非常感谢。现在我只需要弄清楚如何将选定的电子邮件移动到这些文件夹中。但最好是为此提出一个新问题。谢谢你的帮助。我为延迟回复道歉。。。