2017-09-16 4 views
0

次の手順を使用して、固有のメールをダウンロードしようとしましたが、エラーが発生しました(91オブジェクト変数またはブロック変数が設定されていません) FindFirst "task =""" & Mailobject.UserProperties.Find("taskID") & """"エラー91で必要な支援:オブジェクト変数またはブロック変数が設定されていません

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

コードをデバッグしようとしましたが、エラーが発生しました。バリエーションvarは、すべてのメールを検索した後にヌル値を表示します。つまりvarは最後のメールまでtaskidを返しますが、forステートメントコードを終了する代わりに最後のメールを検索した後にメールを再度ループし、エラーを表示します。だから私はあなたがそれを適用する際に私を助けることができる出口を適用する必要があると思う。 – Supernova

答えて

1

このエラーは、(それが適切に設定されていない、または.FindFirst実行する前に閉じられていたのいずれか)レコードセットオブジェクト内のいくつかのバグを指します。

あなたが提供したコードを使用して複製することはできませんので、あなた自身でトラブルシューティングを行う必要があります。

あなたはWithブロックを除去することにより、より説明のエラーを頻繁に取得することができます。

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

     Mailobject.UnRead = False 
    End If 
End If 
1

Set rst= db.OpenRecordset("mls") 
+0

これを試しましたが、まだエラーが発生しています – Supernova

0

によって

Set rst= CurrentDb.OpenRecordset("mls") 

を交換してください。最後に、これは私が扱ってきた方法ですエラー

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 var As variant 
Set db = CurrentDb 

Set OlApp = CreateObject("Outlook.Application") 
Set inbox = OlApp.GetNamespace("Mapi").GetDefaultFolder(olFolderInbox) 
Set rst= CurrentDb.OpenRecordset("mls") 
Set inboxItems = inbox.Items 
On error resume next 
For Each Mailobject In inboxItems 
    set var = MailObject.UserProperties.Find("taskID") 
IF Not (var Is Nothing) Then 
     With rst 
      .FindFirst "task=" Chr(34) & var & Chr(34) 
     If .NoMatch then 
      .AddNew 
      !task= var.value & "" 
      .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 
関連する問題