我想保存电子邮件中的.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
@Helowxi,您的路径变量似乎根本不包含文件名:结账[https://msdn.microsoft.com/de-de/vba/excel-vba/articles/workbook-saveas-method-excel]将您想要的文件名添加到变量中,例如
path = "G:" & Format(Date, "DD-MM-YYYY") & "-MyFileName.xlsx"
尝试一下。
您可以使用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