2017-09-07 26 views
0

我正在使用此代码将某些Outlook邮件字段下载到访问中。这工作得很好,但代码继续下载重复的邮件。有没有办法检查现有记录并下载不在表格中的记录?你的回答将帮助很多在我的项目 将唯一数据下载到ms访问表中

Private Sub getml() 
Dim rst As DAO.Recordset 
Dim OlApp As Outlook.Application 

Dim inbox As Outlook.MAPIFolder 
Dim inboxItems As Outlook.Items 
Dim Mailobject As Object 
Dim db As DAO.Database 
Dim dealer As Integer 
Set db = CurrentDb 

Set OlApp = CreateObject("Outlook.Application") 
Set inbox = OlApp.GetNamespace("Mapi").GetDefaultFolder(olFolderInbox) 
Set rst= CurrentDb.OpenRecordset("mls") 
Set inboxItems = inbox.Items 
For Each Mailobject In inboxItems 

    With rst 
     .AddNew 
     !task= Mailobject.UserProperties.Find("taskID") 
     !tsktml= Mailobject.UserProperties.Find("timeline") 
     .Update 

     Mailobject.UnRead = False 
    End With 
End If 
Next 
Set OlApp = Nothing 
Set inbox = Nothing 
Set inboxItems = Nothing 
Set Mailobject = Nothi 
End Sub 
+0

每个项目都会有一个'ConversationID'这是唯一的该项目 - 它看起来像** ** 2002F3A5F78D45EBA44C273A54AFB802。这个ID只会改变,如果你将项目移动到另一个文件夹 - 我有代码的地方,将跟踪ID的变化,但如果该项目不移动它使一个有用的唯一标识符。 –

回答

2

我假设TaskID是任务的数字唯一标识符,而不是熟悉的Outlook对象。如果是这样,您可以使用以下代码首先检查尚未导入的任务。

Private Sub getml() 
    Dim rst As DAO.Recordset 
    Dim OlApp As Outlook.Application 

    Dim inbox As Outlook.MAPIFolder 
    Dim inboxItems As Outlook.Items 
    Dim Mailobject As Object 
    Dim db As DAO.Database 
    Dim dealer As Integer 
    Set db = CurrentDb 

    Set OlApp = CreateObject("Outlook.Application") 
    Set inbox = OlApp.GetNamespace("Mapi").GetDefaultFolder(olFolderInbox) 
    Set rst= CurrentDb.OpenRecordset("mls") 
    Set inboxItems = inbox.Items 
    For Each Mailobject In inboxItems 

     With rst 
      .FindFirst "task =""" & Mailobject.UserProperties.Find("taskID") & """" 
      If .NoMatch 
       .AddNew 
       !task= Mailobject.UserProperties.Find("taskID") 
       !tsktml= Mailobject.UserProperties.Find("timeline") 
       .Update 

       Mailobject.UnRead = False 
      End If 
     End With 
    End If 
    Next 
    Set OlApp = Nothing 
    Set inbox = Nothing 
    Set inboxItems = Nothing 
    Set Mailobject = Nothing 
End Sub 
+0

实际上,taskid是一个包含“task-1234”数据的字段,它是由连字符分隔的文本和数字的组合。现在,如果你不介意你能帮我解决问题,那么没有邮件会被下载。 – Supernova

+0

尝试当前编辑。额外的引号被添加到'.FindFirst'参数中以说明它是一个字符串。 –

+0

我收到一条错误消息,因为91:对象变量或块变量未设置在行“.FindFirst”task =“”“&Mailobject.UserProperties.Find(”taskID“)&”“”“”你能帮我吗我尝试设置一个暗淡的变体,但它不能帮助我,你能帮助我吗? – Supernova