主要问题是它只重命名第一个附件,我无法控制电子邮件中的其他项目。
此代码保存我的附件并重命名。它的工作原理是,如果电子邮件只有一个附件而且签名中没有图像。如果电子邮件附带一个Excel文件和一个签名图像,它会将图像重命名为我想要的Excel文件名,然后将Excel文件保留为其原始名称。
如果我还可以在保存中指定特定的扩展名,那将会很棒。
Public Sub saveAttachtoDisk_Vendor(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim fso As Object
Dim oldName
Dim file As String
Dim DateFormat As String
Dim newName As String
Dim enviro As String
saveFolder = "S:\Test\"
Set fso = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
For Each objAtt In itm.Attachments
file = saveFolder & objAtt.DisplayName
objAtt.SaveAsFile file
Set oldName = fso.GetFile(file)
DateFormat = Format(oldName.DateLastModified, "yyyy-mm-dd ")
newName = "Vendor.xls"
oldName.Name = newName
Set objAtt = Nothing
Next
Set fso = Nothing
End Sub
我正在使用这些代码,但无法让它们工作。
validExtString = ".doc .docx .xls .xlsx .msg .pdf .txt" ' <---- Update as needed
validExtArray = Split(validExtString, " ")
而且这个。
If Right(Atmt.FileName, 3) = "xls" Then
FileName = "C:\Email Attachments\" & Atmt.FileName
Atmt.SaveAsFile FileName
i = i + 1
End If
答案 0 :(得分:0)
请注意,该文件夹不能包含具有相同名称的文件。您需要为附件使用不同的名称。
For each objAtt in itm.Attachments
代码遍历所有附件并将其保存在磁盘上。看起来代码中的错误不允许完成工作。
我建议逐步运行代码(F8),看看在调试器下运行它的代码会发生什么。有关详细信息,请参阅Getting Started with VBA in Outlook 2010。