0
我正在嘗試在Outlook(VBA)中編寫一些代碼,以便在文件到達時自動將附件保存到文件中。然而,難點是我想保存它們的文件名是部分從文件內容中提取的(例如,附件名爲'10-0123.xls',並且包含Lockyer Valley的數據。我希望磁盤上的文件被稱爲'10 -0123_Lockyer.xls')。唯一參考位置(在這種情況下爲'Lockyer')在附件中,並且每個電子郵件都會隨着每個電子郵件而改變數字(在這種情況下爲'10-0123')和位置(在這種情況下爲'Lockyer')。Outlook VBA從附件中找到的字符串中獲取附件的文件名
我已經找到了一種方法,通過將文件保存到磁盤('10-0123.xls'),打開它,在文件中找到字符串('Lockyer'),保存爲新的文件名('10-0123_Lockyer.xls'),然後殺死原始文件('10-0123.xls'),但由於文件非常大,運行宏需要一段時間。有沒有更高效的方法來實現這一目標?也許有一種方法可以直接從outlook打開文件,而不必先保存到磁盤上?
代碼:
unPrntdRprts = "C:\New Reports"
For Each Attachment In MailItem.Attachments
AtNameExt = Attachment.DisplayName
AtExt = Right(AtNameExt, 4)
AtName = Left(AtNameExt, Len(AtNameExt) - 4)
XLApp.DisplayAlerts = False
Attachment.SaveAsFile (UnPrntdRprts & "\" & AtNameExt)
XLApp.DisplayAlerts = True
XLApp.Workbooks.Open (UnPrntdRprts & "\" & AtNameExt)
SiteName = XLApp.Workbooks(AtNameExt).Worksheets(1).Range("A24").Value
SavName = AtName & "_" & SiteName & AtExt
XLApp.DisplayAlerts = False
XLApp.Workbooks(AtNameExt).SaveAs (UnPrntdRprts & "\" & SavName)
XLApp.DisplayAlerts = True
XLApp.Workbooks(SavName).Close
Kill (UnPrntdRprts & "\" & AtNameExt)
Next
乾杯克雷格,這是一個想法,我會在明天早上看看它,讓你知道。 –
克雷格的想法歡呼,工作就像一個魅力。 –
恐怕無法在Outlook中打開文件(您需要先保存它),但如果Craig的答案奏效,您能否將其標記爲答案? – JimmyPena