Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 通过OLE自动化(VFP或VB)在Outlook中创建文件夹_Vb.net_Ole_Visual Foxpro - Fatal编程技术网

Vb.net 通过OLE自动化(VFP或VB)在Outlook中创建文件夹

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

我想使用OLE自动化在收件箱、发送、垃圾箱文件夹旁边添加一些新文件夹。我的首选语言是VFP,但VB可能也很有用

下面是我在应用程序对象中挖掘了多远来找出这一点

    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层完成
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多个账户。我需要根据需要将电子邮件移动到新文件夹中。如何导航到正确的帐户或电子邮件地址?我不知道如何更改帐户。我可以按照您的指定将文件夹添加到两个级别。非常感谢。现在我只需要弄清楚如何将选定的电子邮件移动到这些文件夹中。但最好是为此提出一个新问题。谢谢你的帮助。我为延迟响应道歉…我能够按照您的指定在两个级别中添加一个文件夹。非常感谢。现在我只需要弄清楚如何将选定的电子邮件移动到这些文件夹中。但最好是为此提出一个新问题。谢谢你的帮助。我为延迟回复道歉。。。