保存Outlook邮件附件

时间:2018-07-12 03:18:33

标签: excel vba excel-vba outlook outlook-vba

我想从电子邮件中保存一个.xlsx附件。

我能够保存文件,但是即使电子邮件带有.xlsx附件,扩展名默认也不是.xlsx。

即使我将其另存为“ .xlsx” OutlookMail.Attachments.Item(1).SaveAsFile path & ".xlsx",也无法打开文件。

Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
Set Folder = OutlookNamespace.GetDefaultFolder(olFolderInbox).Folders("WeeklyMail")
Dim path As String


path = "G:\" & Format(Date, "DD-MM-YYYY") & "-"
For Each OutlookMail In Folder.Items        
    If OutlookMail.ReceivedTime >= Range("A1").Value Then
       title = OutlookMail.subject
       If InStr(title, "[Hello]") Then
            OutlookMail.Attachments.Item(1).SaveAsFile path
       End If
    End If
Next OutlookMail

2 个答案:

答案 0 :(得分:0)

@Helowxi,您的path变量似乎根本不包含文件名: 签出[https://msdn.microsoft.com/de-de/vba/excel-vba/articles/workbook-saveas-method-excel] 将所需的文件名添加到变量中,例如

path = "G:\" & Format(Date, "DD-MM-YYYY") & "-MyFileName.xlsx"

并尝试一下。

答案 1 :(得分:0)

您可以使用OutlookMail.Attachments.Item(1).FileName来获取带有扩展名的附件的文件名

下面的代码将获取文件扩展名并保存。我使用instrrev来防止带有两个句点的文件名。

@ EarlyBird2正确指出丢失的文件名

Dim attchFileName as String

Dim myFileName as String

Dim FileExt as String

myFileName = "some file"

attchFileName = OutlookMail.Attachments.Item(1).FileName

FileExt = Right(attchFileName, len( attchFileName) - instrrev(attchFileName,"."))

OutlookMail.Attachments.Item(1).SaveAsFile path & "." & myFileName & FileExt