从Access创建Outlook通讯组列表

时间:2014-06-09 18:38:39

标签: database vba email outlook

我有一个Access数据库,其中包含联系人信息表和类别表。联系人已添加到类别中。我正在尝试使用VBA将它们导出为Outlook作为联系人和通讯组列表。

第一步(设置联系人)正在运行。我的问题是创建分发列表。我发现只有少数(可能是5%)实际上正确解析了。我无法理解为什么因为那些已经解决的问题和一些没有解决的问题之间似乎没有任何明显的区别。

在附加的代码中,相关的子项是CreateDLs。如果我向olRecipients添加电子邮件地址,我最终会解决所有问题,但只是名称和电子邮件地址相同的列表。这是暂时可用的,因为大多数人的电子邮件地址告诉我他们是谁。但是,如果我尝试按名称添加它们(注释掉行),那么只有一小部分可以解析,但它们都是通过ExportAccessContactsToOutlook例程创建的。

我尝试通过olRecipient一次添加一个,我得到相同的结果,所以它似乎不是因为一次添加多个。

有人可以提出可能发生的事情吗?

有没有办法在一个步骤中添加整个联系人项目,而不仅仅是提供名称并希望能够正确解析?

我正在努力让我的代码正确粘贴,只有部分内容似乎被识别为代码。我使用{}(CNTRL / K)快捷方式和粘贴,但大部分不会在代码窗口中结束,它告诉我它没有正确格式化。我是从VB窗口直接解除它。

1 个答案:

答案 0 :(得分:0)

您需要确保将联系人添加到Outlook文件夹中,该文件夹配置为显示为地址簿。

您还需要确保名称是唯一的,否则您将收到不明确的名称错误。

如果使用Redemption是一个选项,则无需解析任何名称,因为您可以使用RDODistListItem直接将联系人添加到通讯组列表.AddContact。一些事情:

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set Contacts = Session.GetDefaultFolder(olFolderContacts)

  set Contact = Contacts.Items.Add("IPM.Contact")
  Contact.FirstName = "Joe"
  Contact.FirstName = "User"
  Contact.Email1Address = "joe@demo.com"
  Contact.Save

  set DL = Contacts.Items.Add("IPM.DistList")
  DL.DLName = "Redemption test"
  DL.AddContact Contact
  DL.Save