[英]how to unzip a attachment in outlook and save it to a foldeer using vba
[英]Outlook VBA unzip attachment and save to folder
我收到来自 ERP 系统的系统生成的电子邮件,其中包含 .zip 文件,zip 文件内是一个 excel 文件,其中包含我想导入到我制作的仪表板中的数据。
目前我有这个代码,当我收到电子邮件时,它成功地将 .zip 附件保存到文件夹中:
Sub saveAttachment2(Item As Outlook.MailItem)
Dim selItems As Selection
Dim objItem As Object
Dim iCount As Integer
Dim atmts As Attachments
Dim oAttachment As Attachment
Dim sSaveFolder As String
Set selItems = ActiveExplorer.Selection
sSaveFolder = "C:\Users\212357980\Documents\Accounts Coordination\Oracle Exports\"
For Each objItem In selItems
Set atmts = objItem.Attachments
For Each oAttachment In atmts
oAttachment.SaveAsFile sSaveFolder & "\Service Requests.zip"
Next
Next
End Sub
现在我希望它在将文件保存到该位置之前解压缩文件,这是我到目前为止所拥有的:
Sub Unzip2()
Dim ns As NameSpace 'variables for the main functionality
Dim Inbox As MAPIFolder
Dim SubFolder As MAPIFolder
Dim Atchmt As Attachment
Dim FileName As String
Dim msg As Outlook.MailItem
Dim FSO As Object 'variables for unzipping
Dim oApp As Object
Dim FileNameFolder As Variant
Set ns = GetNamespace("MAPI")
Set Inbox = ns.GetDefaultFolder(olFolderInbox)
Set SubFolder = Inbox.Folders("Sales Orders")
For Each msg In SubFolder.Items
For Each Atchmt In msg.Attachments
If (Right(Atchmt.FileName, 3) = "zip") Then
FileNameFolder = "C:\Users\212357980\Documents\Accounts Coordination\Oracle Exports\"
Set oApp = CreateObject("Shell.Application")
With oApp
.NameSpace(FileNameFolder).CopyHere
.NameSpace(Atchmt.FileName).Items
End With
On Error Resume Next
Set FSO = CreateObject("scripting.filesystemobject")
FSO.deletefolder Environ("Temp") & "\Temporary Directory*", True
End If
Next
Next
End Sub
我在 with 之后的两行收到错误“参数数量错误或属性分配无效”。
您能提供的任何帮助都会很棒!
看: NameSpace(Atchmt.FileName).Items 表明有几个项目。 您正试图将它们全部收集在一件物品中。
尝试 n = 1 到(附件数) NameSpace(Atchmt.FileName).Items(n) .. 等 ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.