【发布时间】:2019-06-26 07:50:14
【问题描述】:
当 PDF 文件到达我的收件箱时,我正在使用以下代码在 Outlook 中自动导出它们。但是,它保存的文件已损坏。 SaveAsFile 方法只接受一个参数 - 要保存到的文件路径 - 它在文档中没有说我可以传递文件类型。如何在不损坏文件的情况下保存这些 PDF 附件?
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
'Declaring Variables [BD]
Dim oOutlook As Outlook.Application
Dim oNameSpace As Outlook.NameSpace
Dim oFolder As Outlook.MAPIFolder
'Intializing Variables [BD]
Set oOutlook = Outlook.Application
Set oNameSpace = Application.GetNamespace("MAPI")
Set oFolder = oNameSpace.GetDefaultFolder(olFolderInbox).Parent
Set oFolder = oFolder.Folders("Produce Availability").Folders("Earls Organic")
Set Items = oFolder.Items
End Sub
Private Sub Items_ItemAdd(ByVal Item As Object)
'Declaring Variables [BD]
Dim sOutputFileName As String
Dim oMessage As Outlook.MailItem
Dim oAttachment As Outlook.Attachments
'Initializing Variables [BD]
sDateTime = Format(Now(), "yyyymmddhhnnss")
sOutputFolderPath = "C:\Earls Organic\"
On Error GoTo ErrorHandler
If TypeName(Item) = "MailItem" Then
Set oMessage = Item
Set oAttachment = oMessage.Attachments
sOutputFileName = oMessage.Subject & " " & sDateTime
sOutputFolderPathAndName = sOutputFolderPath & sOutputFileName & ".pdf"
oAttachment.Item(1).SaveAsFile sOutputFolderPathAndName
Set oAttachment = Nothing
Set oItem = Nothing
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
【问题讨论】:
-
我认为如果您要保存附件,则无需定义扩展名吧? docs.microsoft.com/en-us/office/vba/api/…您只需要定义保存附件的位置即可。
-
可能,我会尝试一下,虽然我不完全确定这样的事情会损坏文件。
-
如果您更改原始扩展名,那么它一定会损坏它
-
我试过了,它保存了没有扩展名的文件,它仍然损坏。
-
您确定附件(1) 是PDF 文件吗?签名和图像可以记录为附件。您应该扫描附件集合并检查扩展名,直到找到 PDF 文件。