Vba 如何选择要为哪个帐户创建outlook项目?

Vba 如何选择要为哪个帐户创建outlook项目?,vba,outlook,outlook-2016,Vba,Outlook,Outlook 2016,我正在编写一个脚本,用于创建和更新outlook便笺。除了一个问题外,一切正常 它在我的个人邮箱中创建和更新便笺,我需要它在我们都可以访问的部门邮箱中创建和维护便笺(我在Outlook中设置了两个帐户) 尽管脚本是由部门邮箱上的规则触发的,并且为部门邮箱提供了邮件项目,但它仍以这种方式运行。如何告诉VBS/Outlook我要使用哪个notes文件夹/帐户?我在任何地方都找不到任何概述如何选择创建便笺的帐户的内容 我正在使用Outlook 2016 Set olkFolder = Session.

我正在编写一个脚本,用于创建和更新outlook便笺。除了一个问题外,一切正常

它在我的个人邮箱中创建和更新便笺,我需要它在我们都可以访问的部门邮箱中创建和维护便笺(我在Outlook中设置了两个帐户)

尽管脚本是由部门邮箱上的规则触发的,并且为部门邮箱提供了邮件项目,但它仍以这种方式运行。如何告诉VBS/Outlook我要使用哪个notes文件夹/帐户?我在任何地方都找不到任何概述如何选择创建便笺的帐户的内容

我正在使用Outlook 2016

Set olkFolder = Session.GetDefaultFolder(olFolderNotes)
Set olkNote = olkFolder.Items.Find("[Subject] = 'Sequential Number'")
If TypeName(olkNote) = "Nothing" Then
    Set olkNote = Application.CreateItem(olNoteItem)
    olkNote.Body = "Sequential Number" & vbCrLf & "NextValue=" & STARTING_VALUE + 1
    GetNextNumber = STARTING_VALUE
Else
    arrLines = Split(olkNote.Body, vbCrLf)
    For Each varLine In arrLines
        If Left(varLine, 10) = "NextValue=" Then
            GetNextNumber = CInt(Mid(varLine, 11))
            olkNote.Body = "Sequential Number" & vbCrLf & "NextValue=" & GetNextNumber + 1
        End If
    Next
End If
您可以将创建的便笺或直接发送到其他帐户中的文件夹

从链接中,添加以下代码:

Sub AddContact() 
    Dim myNamespace As Outlook.NameSpace 
    Dim myFolder As Outlook.Folder 
    Dim myItem As Outlook.ContactItem 
    Dim myOtherItem As Outlook.ContactItem 

    Set myNamespace = Application.GetNamespace("MAPI") 
    Set myFolder = myNamespace.GetDefaultFolder(olFolderContacts) 
    Set myOtherItem = myFolder.Items("Dan Wilson") 
    Set myItem = myFolder.Items.Add 
    myItem.CompanyName = myOtherItem.CompanyName 
    myItem.BusinessAddress = myOtherItem.BusinessAddress 
    myItem.BusinessTelephoneNumber = myOtherItem.BusinessTelephoneNumber 
    myItem.Display 
End Sub
如果您的导航窗格中有邮箱,“向下导航树”

在代码中:

Set olkFolder = ns.Folders("name of other mailbox").Folders("Notes")
无论文件夹是否在您的导航窗格中,您都可以按照其他答案中的说明使用。

您可以将创建的便笺或直接发送到其他帐户中的文件夹

从链接中,添加以下代码:

Sub AddContact() 
    Dim myNamespace As Outlook.NameSpace 
    Dim myFolder As Outlook.Folder 
    Dim myItem As Outlook.ContactItem 
    Dim myOtherItem As Outlook.ContactItem 

    Set myNamespace = Application.GetNamespace("MAPI") 
    Set myFolder = myNamespace.GetDefaultFolder(olFolderContacts) 
    Set myOtherItem = myFolder.Items("Dan Wilson") 
    Set myItem = myFolder.Items.Add 
    myItem.CompanyName = myOtherItem.CompanyName 
    myItem.BusinessAddress = myOtherItem.BusinessAddress 
    myItem.BusinessTelephoneNumber = myOtherItem.BusinessTelephoneNumber 
    myItem.Display 
End Sub
如果您的导航窗格中有邮箱,“向下导航树”

在代码中:

Set olkFolder = ns.Folders("name of other mailbox").Folders("Notes")

无论文件夹是否在导航窗格中,您都可以按照另一个答案中的说明使用。

而不是使用
Application.CreateItem
,使用
Application.Session.CreateRecipient
/
Application.Session.GetSharedDefaultFolder
打开另一个邮箱中的文件夹,然后调用
MAPIFolder.Items.Add
,或者(如果该邮箱已在Outlook中可用)从
Application.Session.Folders
和(再次)开始向下钻取该文件夹调用
MAPIFolder.Items.Add

替换

Set olkFolder = Session.GetDefaultFolder(olFolderNotes)
...
Set olkNote = Application.CreateItem(olNoteItem)


不要使用
Application.CreateItem
,而是使用
Application.Session.CreateRecipient
/
Application.Session.GetSharedDefaultFolder
从另一个邮箱打开文件夹,然后调用
MAPIFolder.Items.Add
或(如果该邮箱在Outlook中已可用)从
Application.Session.Folders
开始向下钻取到该文件夹,然后(再次)调用
MAPIFolder.Items.Add

替换

Set olkFolder = Session.GetDefaultFolder(olFolderNotes)
...
Set olkNote = Application.CreateItem(olNoteItem)


您能提供您的代码吗?添加到初始邮政编码后,您可以发布完整的代码吗?windows正在使用什么?您能提供您的代码吗?添加到初始postCan后,您可以发布完整的代码吗?windows正在使用什么?我找不到的是如何将其直接添加到该文件夹中。我找不到的是如何将其直接添加到该文件夹中。您可以提供一个如何使用这些的示例吗?我不是VBA或outlook专家,所以现在我比以前更困惑了。。。告诉outlook“在此邮箱的默认notes文件夹中创建备注”应该不会太复杂。这其实并不复杂。查看更新后的答案。包含此文件夹的邮箱是作为Outlook中的附加邮箱/帐户设置的,还是您仅对其具有委派访问权限?@Eric legault它是Outlook中的实际邮箱/帐户。尽管运行时没有错误,但这些解决方案都不适用于我。我不明白为什么它没有session.getdefaultfolder(account,olFolderNotes)那么简单,那么除了Dmitry的代码之外,您还需要遍历NameSpace.Accounts集合,直到找到另一个邮箱的account对象。然后使用Account.DeliveryStore获取存储对象,并使用Store.GetDefaultFolder或Store.GetRootFolder查找所需的文件夹对象。您可以提供一个如何使用这些对象的示例吗?我不是VBA或outlook专家,所以现在我比以前更困惑了。。。告诉outlook“在此邮箱的默认notes文件夹中创建备注”应该不会太复杂。这其实并不复杂。查看更新后的答案。包含此文件夹的邮箱是作为Outlook中的附加邮箱/帐户设置的,还是您仅对其具有委派访问权限?@Eric legault它是Outlook中的实际邮箱/帐户。尽管运行时没有错误,但这些解决方案都不适用于我。我不明白为什么它没有session.getdefaultfolder(account,olFolderNotes)那么简单,那么除了Dmitry的代码之外,您还需要遍历NameSpace.Accounts集合,直到找到另一个邮箱的account对象。然后使用Account.DeliveryStore获取存储对象,并使用Store.GetDefaultFolder或Store.GetRootFolder查找所需的文件夹对象。