【问题标题】:How do I select which account I want to create an outlook item for?如何选择要为其创建 Outlook 项目的帐户?
【发布时间】:2017-04-07 14:28:51
【问题描述】:

我正在编写一个脚本来创建和更新 Outlook 注释。一切正常,除了一个问题。

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

尽管脚本由部门邮箱上的规则触发并获得部门邮箱的邮件项目,但仍以这种方式运行。我如何告诉 VBS/Outlook 我想使用哪些笔记文件夹/帐户?我在任何地方都找不到概述如何选择将在哪个帐户下创建笔记的任何内容。

我正在使用 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

【问题讨论】:

  • 你能提供你的代码吗?
  • 添加到初始帖子
  • 你能发布完整的代码吗?以及正在使用哪些窗口?

标签: vba outlook outlook-2016


【解决方案1】:

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

替换

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

set recip = Session.CreateRecipient("SomeOtherUser@YourDomain.demo")
Set olkFolder = Session.GetSharedDefaultFolder(recip, olFolderNotes)
...
Set olkNote = olkFolder.Items.Add

【讨论】:

  • 你能提供一个如何使用这些的例子吗?我不完全是 VBA 或 Outlook 专家,所以现在我比以前更加困惑......告诉 Outlook“在此邮箱的默认便笺文件夹中创建便笺”真的不应该复杂。
  • 真的不复杂。查看更新的答案。
  • 包含此文件夹的邮箱是否设置为 Outlook 中的附加邮箱/帐户,还是您只有代理访问权限?
  • @Eric legault 它是 Outlook 中的实际邮箱/帐户。尽管运行无错误,但这些解决方案都不适合我。我不明白为什么它不像session.getdefaultfolder(account, olFolderNotes)那么简单
  • 那么除了 Dmitry 的代码之外,您还需要遍历 NameSpace.Accounts 集合,直到找到另一个邮箱的 Account 对象。然后使用 Account.DeliveryStore 获取一个 Store 对象,并使用 Store.GetDefaultFolder 或 Store.GetRootFolder 查找您需要的 Folder 对象。
【解决方案2】:

您可以move您创建的笔记或add直接到其他帐户中的文件夹。

从链接中,添加代码:

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

如果您的导航窗格中有邮箱,请“向下导航”。 https://stackoverflow.com/a/6116820/1571407

ns.Folders("Personal Folders").Folders("Inbox")

在您的代码中:

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

无论该文件夹是否在您的导航窗格中,您都可以使用CreateRecipient,如另一个答案中所述。

【讨论】:

  • 我找不到的是如何将其直接添加到该文件夹​​。
猜你喜欢
  • 1970-01-01
  • 2021-07-20
  • 2010-10-24
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多