Vba 91未设置对象变量或带块变量

Vba 91未设置对象变量或带块变量,vba,outlook,download,attachment,Vba,Outlook,Download,Attachment,我正在尝试从指定主题的电子邮件下载附件 If Msg.Subject = "CALENDAR-EVENT" Then 'Download the attachment Dim itmAttach As Outlook.MailItem Dim objAtt As Outlook.Attachment Dim saveFolder As String saveFolder = "C:\events\"

我正在尝试从指定主题的电子邮件下载附件

If Msg.Subject = "CALENDAR-EVENT" Then

        'Download the attachment

        Dim itmAttach As Outlook.MailItem
        Dim objAtt As Outlook.Attachment
        Dim saveFolder As String
            saveFolder = "C:\events\"
        Dim dateFormat As String
            dateFormat = Format(itmAttach.ReceivedTime, "yyyy-mm-dd Hmm ")
        For Each objAtt In itmAttach.Attachments
            objAtt.SaveAsFile saveFolder & "\" & dateFormat & objAtt.DisplayName
        Next
End if
我得到一个错误:

91未设置对象变量或带块变量

可能线路有错误:

Dim itmAttach As Outlook.MailItem

获取下载文件的名称也很好。

我以前没有使用outlook API,多年来也没有接触VBA,但从外观上看,您的意思是:

If Msg.Subject = "CALENDAR-EVENT" Then
        Dim objAtt As Outlook.Attachment
        Dim saveFolder As String
            saveFolder = "C:\events"
        Dim dateFormat As String
            dateFormat = Format(Msg.ReceivedTime, "yyyy-mm-dd Hmm ")
        For Each objAtt In Msg.Attachments
            objAtt.SaveAsFile saveFolder & "\" & dateFormat & objAtt.DisplayName
        Next
End if

错误91似乎是VBA的NullReferenceException。

这就像做梦一样工作。还有一个问题:我希望将文件名保存到一个变量中,如下所示:
Dim filename as String filename=dateFormat&objAtt.DisplayName
之后,我需要在代码中使用文件名:
csvFilePath=“c:\events\filename.csv”
,但这不起作用。知道怎么做吗?我想绝对路径应该是
fileName=saveFolder&“\”&dateFormat&objAtt.DisplayName