2017-12-03 22 views
0

このマクロは「クリーン」な新しい電子メールで使用すると問題なく動作します。オブジェクト変数またはWithブロック変数がOutlook VBAランタイムエラー91オブジェクト変数またはWithブロック変数が設定されていません

Private WithEvents olRemind As Outlook.Reminders 

Private Sub Application_Reminder(ByVal Item As Object) 
Set olRemind = Outlook.Reminders 

If Item.MessageClass <> "IPM.Task" Then 
    Exit Sub 
End If 

If Item.Categories <> "Online" Then 
    Exit Sub 
End If 

SetOnline 

Timed_box (1) 

Pause 30 

SetOffline 

Item.MarkComplete 

Set olRemind = Outlook.Reminders 
    For Each objRem In olRemind 
      If Item.Categories = "Online" Then 
       If objRem.IsVisible Then 
        objRem.Dismiss 
        Cancel = True 
       End If 
       Exit For 
      End If 
     Next objRem 

End Sub 

'Categorize Sent Items 
'Place in ThisOutlookSession 
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 
    If TypeOf Item Is Outlook.MailItem And Len(Item.Categories) = 0 Then 
     Set Item = Application.ActiveInspector.CurrentItem 
     Item.ShowCategoriesDialog 
    End If 
End Sub 

Set Item = Application.ActiveInspector.CurrentItemが、私は、デバッグに必要なラインで設定されていない - 私は返信または電子メールを転送するときしかし、私はVBAが

エラー91を得ます。ありがとう

答えて

0

私は返信または転送がOutlookの一番下にあるペインのActiveInlineResponseペインにあると推測します。私は最近、そのペインを考慮に入れるためにいくつかのコードを修正しました。その場合、このようなものがあなたのために働くかもしれません:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 
    If TypeOf Item Is Outlook.MailItem And Len(Item.Categories) = 0 Then 
    If Not Application.ActiveExplorer.ActiveInlineResponse Is Nothing Then 
     Set Item = Application.ActiveExplorer.ActiveInlineResponse 
    End If 
    'If the draft is in it's own window 
    If OutItem Mail Is Nothing Then 
     If Not Application.ActiveInspector Is Nothing Then 
     Set Item = Application.ActiveInspector.CurrentItem 
     Item.ShowCategoriesDialog 
    End If 
End Sub 

このコードはテストされていないため、正しく貼り付けられていない可能性があります。

0

ItemSendにアイテムが渡されました。あなたはそれを自分で見つける必要はありません。

'Categorize Sent Items 
'Place in ThisOutlookSession 
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 
    If TypeOf Item Is Outlook.MailItem And Len(Item.Categories) = 0 Then 
     Item.ShowCategoriesDialog 
    End If 
End Sub 
関連する問題