Outlook vba邮件项目案例

Outlook vba邮件项目案例,vba,outlook,camelcasing,typename,mailitem,Vba,Outlook,Camelcasing,Typename,Mailitem,我正在尝试在Outlook 2013的vba中定义MailItem变量。但是,每次我将Dim mail键入为MailItem时,MailItem都会更新为MailItem。据我所知,这不是正确的类型。当我尝试MsgBox TypeNamemail时,它什么也不显示 我不知道为什么会这样。任何帮助都将不胜感激。谢谢 整个代码如下所示 Private Sub Items_ItemAdd(ByVal newMail As Object) 'On Error Resume Next O

我正在尝试在Outlook 2013的vba中定义MailItem变量。但是,每次我将Dim mail键入为MailItem时,MailItem都会更新为MailItem。据我所知,这不是正确的类型。当我尝试MsgBox TypeNamemail时,它什么也不显示

我不知道为什么会这样。任何帮助都将不胜感激。谢谢

整个代码如下所示

Private Sub Items_ItemAdd(ByVal newMail As Object)

    'On Error Resume Next
    On Error GoTo ErrorHandler

    Dim mail As Outlook.mailItem
    If TypeName(newMail) = TypeName(mail) Then        ***<-- I want this if block to execute. But it doesn't!***
        Set mail = newMail
        SaveAttachments (newMail)
    End If
ProgramExit:
    Exit Sub
ErrorHandler:
    MsgBox Err.Number & " - " & Err.Description
    Resume ProgramExit
End Sub

TypeName将显示活动对象的类型名称。如果它从未被初始化为null,您将什么也看不到


话虽如此,你究竟什么时候看到暗淡的陈述发生了变化?在Outlook VBA编辑器中?

您知道VBA不区分大小写,是吗?也就是说,MailItem和MailItem是非常相似的。我知道。但是,为什么TypeName没有显示任何内容?根据Dimitry的回答,您可能需要设置mail=ActiveInspector.CurrentItem之类的内容。我仍然不确定解决方案。我已经在上面添加了代码。请帮我看一下!VBA不区分大小写,因此两种声明都可以使用。由于变量尚未初始化,因此TypeName中没有任何内容。这很好。您应该将如果TypeNamenewMail=TypeNamemail更改为如果TypeNamenewMail=MailItem