2017-09-07 9 views
0

このコードを使用して、特定のOutlookメールフィールドをアクセスにダウンロードしています。これはうまくいくが、コードは重複したメールをダウンロードし続ける。既存のレコードをチェックし、テーブルにないレコードをダウンロードする方法はありますか?あなたの答えは、私はOutlookのオブジェクトとそのおなじみの、TaskIDは、タスクのための数値の一意の識別子であることではないと仮定しています 固有のデータを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

私のプロジェクトに大いに役立つでしょう。その場合は、次のコードを使用して、タスクがまだインポートされていないことを最初に確認することができます。

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

関連する問題