1

我创建了一个自定义的联系人访问数据库。我想将 Outlook 连接到数据库,以便每次用户收到电子邮件时,都会触发一个操作来搜索访问数据库以查看该联系人是否存在(基于我猜的电子邮件地址)。如果联系人不存在,它会使用电子邮件中的信息自动将联系人添加到数据库中,然后将电子邮件的内容作为信息注释添加到该联系人。如果联系人确实存在,它会自动将电子邮件内容作为信息注释添加到现有联系人中。

谁能指导我如何设置这样的系统?我习惯于在 MS Access 中使用 VBA 进行开发,但我不习惯在 Outlook 中使用 VBA 进行开发,所以我不知道从哪里开始。

任何帮助将非常感激。

4

1 回答 1

1

我测试这个已经有一段时间了,但是可以使用 Outlook 事件。

对于此示例,您将需要一个名为 clsOlMail 的类模块,其中包含以下代码:

'Requires reference to the Microsoft Outlook x.x Object Library
Dim WithEvents conItems As Outlook.Items

Private Sub Class_Initialize()
   Set oApp = Outlook.Application
   Set oNS = oApp.GetNamespace("MAPI")
   Set conFolder = oNS.GetDefaultFolder(olFolderSentMail)
   Set conItems = conFolder.Items
End Sub

Private Sub Class_Terminate()
   Set conItems = Nothing
   Set conFolder = Nothing
   Set oNS = Nothing
   Set oApp = Nothing
End Sub

Sub ConItems_ItemAdd(ByVal Item As Object)
Dim frm As Form

   Set frm = Forms!frmEmailDetails

   frm.txtSenderName = Item.SenderName
   frm.txtSentOn = Item.SentOn
   frm.txtTo = Item.To
   frm.txtCreationTime = Item.CreationTime
   frm.txtBCC = Item.BCC
   frm.txtCC = Item.CC
   frm.txtSentOnBehalfOfName = Item.SentOnBehalfOfName
   frm.txtSubject = Item.Subject
   frm.txtBody = Item.Body
End Sub

您还需要一个名为 frmEmailDetails 的表单,其中包含以下文本框:

txtSenderName, 
txtSentOn, 
txtTo, 
txtCreationTime, 
txtBCC, 
txtCC, 
txtSentOnBehalfOfName, 
txtSubject, 
txtBody

而这段代码:

Private oEvent As clsOLMail
'Requires reference to Microsoft Outlook x.x Object Library

Public oApp As Outlook.Application
Public oNS As Outlook.NameSpace
Public conFolder As Outlook.MAPIFolder

Private Sub Form_Open(Cancel As Integer)
    Set oEvent = New clsOlMail
End Sub 

打开表单并通过 Outlook 发送电子邮件,您可以使用上面显示的示例之一。表单字段应填写已发送电子邮件中的相关详细信息。您可能会收到 Outlook 安全警告。

于 2012-08-07T11:13:13.807 回答