我想从电子邮件中保存一个.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
答案 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