3
我有,目前從一個.zip提取一個.xls以下,然後用新的名稱保存到指定的目錄展望VBA覆蓋磁盤上的現有文件
Public Sub saveAttachmentZip(itm As Outlook.MailItem)
Const saveFolder = "C:\Temp\"
Const fileFolder = "C:\Report\"
Dim objAtt As Outlook.Attachment
Dim oApp As Object
Dim dName As Variant
For Each objAtt In itm.Attachments
dName = objAtt.DisplayName
objAtt.SaveAsFile saveFolder & dName
Set oApp = CreateObject("Shell.Application")
oApp.NameSpace("C:\Report\").CopyHere _
oApp.NameSpace(saveFolder & dName).Items
Name fileFolder & "Report.xls" As fileFolder & "NewReport.xls"
Kill saveFolder & dName
Next
End Sub
我唯一的問題是,這個作品由於文件已經存在,一次然後失敗。爲了覆蓋現有文件,是否需要另存一種方法來保存它?
獎金信息
我也有做同樣的事情如下但是對於電子郵件,沒有壓縮擴展,這一個正確覆蓋磁盤上的現有文件
Public Sub saveAttach(itm As Outlook.MailItem)
Const fileFolder = "C:\Report\"
Dim objAtt As Outlook.Attachment
For Each objAtt In itm.Attachments
objAtt.SaveAsFile fileFolder & "\" & "OldReport.csv"
Set objAtt = Nothing
Next
End Sub
我仍然收到文件已存在的錯誤。幾乎看起來它甚至沒有達到Windows要求覆蓋文件的地步,而是代碼失敗,因爲它已經存在。 – Josh
關掉你的思想,我將註釋重新命名爲文件的部分,然後刪除原文。這正確覆蓋該文件,所以我可以從那裏繼續。謝謝! – Josh
你確定這段代碼甚至可以運行嗎?應用程序沒有名爲Namespace的屬性或函數。 GetNamespace函數只允許「MAPI」作爲其參數。沒有Outlook對象具有CopyHere方法。 –