vba - 在 Outlook 中收到新邮件后,如何传递第二个变量以运行?

标签 vba outlook

Private WithEvents Items As Outlook.Items
Public MyTrueFalse As Boolean 
Private Sub Application_Startup()
  Dim MyTrueFalse As Boolean 'Redundant?'
  MyTrueFalse = True 'Defaults to False'  
  Dim olApp As Outlook.Application 
  Dim objNS As Outlook.NameSpace 
  Set olApp = Outlook.Application 
  Set objNS = olApp.GetNamespace("MAPI") 
  ' default local Inbox
  Set Items = objNS.GetDefaultFolder(olFolderInbox).Items 
End Sub
Private Sub Items_ItemAdd(ByVal item As Object, ByVal MyTrueFalse As Boolean) 
  If MyTrueFalse Then GoTo DoThisAlso 'Example Only'
  On Error Goto ErrorHandler 
  Dim Msg As Outlook.MailItem 
  If TypeName(item) = "MailItem" Then
    Set Msg = item 
    ' ******************
    ' do something here
    ' ******************
  End If
DoThisAlso:
   MsgBox "MyTrueFalse is: " & MyTrueFalse
ProgramExit: 
  Exit Sub
ErrorHandler: 
  MsgBox Err.Number & " - " & Err.Description 
  Resume ProgramExit 
End Sub

我正在使用上面的代码,它在 NEW EMAIL 触发器上运行良好(谢谢 - Gautam Mainkar(LINK)。但是,我正在尝试将 bool (真/假)变量与 Items 事件一起传递触发。

因此,我试图在 Application_Startup() 中设置 say...MyTrueFalse,因此它仅设置一次,并在 Items_ItemAdd 被新电子邮件触发时传递。

我不想要另一个子例程,只需传递在 Application_Startup() 中设置的 MyTrueFalse bool 值。

我在 Items_ItemAdd 子项上尝试了多种公共(public)设置和多个变量,但没有任何效果。我希望有人能在这里帮助我。谢谢

哦是的:它驻留在 ThisOutlookSession 中

最佳答案

Private WithEvents Items As Outlook.Items
Private MyTrueFalse As Boolean 
Private Sub Application_Startup()
  MyTrueFalse = True  
  Dim olApp As Outlook.Application 
  Dim objNS As Outlook.NameSpace 
  Set olApp = Outlook.Application 
  Set objNS = olApp.GetNamespace("MAPI") 
  ' default local Inbox
  Set Items = objNS.GetDefaultFolder(olFolderInbox).Items 
End Sub
Private Sub Items_ItemAdd(ByVal item As Object) 
  If MyTrueFalse Then GoTo DoThisAlso 'Example Only'
  On Error Goto ErrorHandler 
  Dim Msg As Outlook.MailItem 
  If TypeName(item) = "MailItem" Then
    Set Msg = item 
    ' ******************
    ' do something here
    ' ******************
  End If
DoThisAlso:
   MsgBox "MyTrueFalse is: " & MyTrueFalse
ProgramExit: 
  Exit Sub
ErrorHandler: 
  MsgBox Err.Number & " - " & Err.Description 
  Resume ProgramExit 
End Sub

Tim Williams 是对的,更正了代码(以上)并且效果很好!!谢谢蒂姆。迈克

关于vba - 在 Outlook 中收到新邮件后,如何传递第二个变量以运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024568/

相关文章:

events - 在 VBA 中订阅事件?

vba - 如何使用VBA编写VBA代码

excel - 从 0 开始 for 循环(而不是 1)

excel - 宏创建文件夹中不同文件中所有不同选项卡的列表

python - 从共享文件夹下载电子邮件附件 - Python

Outlook vsto - 文件夹限制

vba - 将图像添加到工作表达到了任意限制

HTML 电子邮件 header 未按应有的方式定位

vba - 如何在Excel VBA中访问联系人组?

c# - 将 Outlook 邮件项目正文另存为 PDF