Я пытаюсь написать код в Outlook (VBA), который будет автоматически сохранять вложения в файл по мере их поступления.Однако трудность заключается в том, что имя файла, который я хочу сохранить, частично извлечено из содержимого файла (например, вложение называется «10 -0123.xls» и содержит данные из Lockyer Valley. Мне нужен файл на дискеназываться '10 -0123_Lockyer.xls ').Единственная ссылка на местоположение (в данном случае «Lockyer») содержится во вложении, и оба номера (в данном случае «10 -0123») и местоположение (в данном случае «Lockyer») меняются с каждым электронным письмом.
Я нашел способ сделать это, сохранив файл на диск как есть ('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